Come faccio spamtrap con Postfix?

Come posso impostare spamtraps con Postfix in modo che i client che inviino agli indirizzi intrappolati non siano inviati più spam?

  • Postfix, come posso rifiutare lo spam da IP sconosciuto (no DNS)
  • Dove posso trovare un elenco di indirizzi IP dei provider di hosting?
  • Perché le email inviate dalle mie applicazioni vengono contrassegnate come spam?
  • Come interrompere gli spammer inviando lo spam come me
  • Quali problemi può registrare un record ADSP nella causa DNS per il stream di posta?
  • Come impedire che la posta del nostro sito web entri nella posta indesiderata degli utenti?
  • Buon & libero filter anti spam
  • Sono 10.10.0.3 e 10.10.0.4 IP per gli spammer
  • 4 Solutions collect form web for “Come faccio spamtrap con Postfix?”

    PANORAMICA

    Filtri bayesiani e corrispondenza di pattern e RBL sono tutti parte della lotta contro lo spam. Questa impostazione è intesa ad aumentare piuttosto che a sostituirle.

    Notate che non sono greilisting. Greylisting è grande in teoria ma in pratica è estremamente fastidioso per i tuoi utenti. Alcune persone hanno un grande successo con esso. Io non sono una di quelle persone.

    Quello che ho fatto è impostare un certo numero di indirizzi e-mail (ho circa 10.000, ma puoi fare a less di un paio di centinaia) per agire come spamtraps. Gli elenchi di questi indirizzi sono collegati in modo discreto da vari siti di traffico elevato where i bot troveranno, ma la gente non lo farà. Questi indirizzi vengono raccolti, venduti agli spammer e ora so where lo spam sarà in ingresso.

    Postfix è configurato per redirect i messaggi a uno di questi indirizzi al mio script spamtrap, che li aggiunge a una tabella in PF in modo che tutti i messaggi successivi da quel cliente finiscano nel mio tarpit.

    I vantaggi:

    • Zero tasso falso-positivo (o quanto più vicino ansible, alless)
    • Resource-economico
    • Blocca gli spammer al livello del firewall dopo la loro prima infrazione
    • Auto-guarigione (gli indirizzi intrappolati scadono dopo 24 ore)

    Gli svantaggi:

    • Non plug-and-play
    • Quasi poche parti in movimento

    COME?

    Il server di posta elettronica deve essere in grado di eseguire PF e spamd. Per quanto ne so, questo significa OpenBSD o FreeBSD. Sono sicuro che queste istruzioni possono essere adattate ai sapori di Linux e dei loro firewall, ma questo è al di là della portta della mia risposta.

    Ho scritto questo per FreeBSD. Gli utenti di OpenBSD dovrebbero essere in grado di adattare questi passaggi per lo più cambiando i routes.

    Infine, questo è tutto per Postfix 2.5+

      tabella <spamd> persist
     tabella <whitelist locale> file persistere "/usr/local/etc/spamd/local-whitelist.txt"
    
    • Installare spamd dalle porte
    • Crea /usr/local/etc/spamd/local-whitelist.txt. PF leggerà questo file per generare la tabella <whitelist locale>. Raccommand di fare riferimento a http://www.greylisting.org/whitelisting.shtml per gli indirizzi che non dovrebbero mai essere tarpiti. Un file di esempio:
      127.0.0.1
     10.0.0.0/8
    
     # amazon
     207.171.168.0/24
     207.171.180.0/24
     207.171.187.0/24
     207.171.188.0/24
     207.171.190.0/24
    
     # AOL
     64.12.137.0/24
     64.12.138.0/24
     152.163.225.0/24
     205.188.139.0/24
     205.188.144.0/24
     205.188.156.66
     205.188.157.0/24
     205.188.159.7
    
     # Mela
     17.254.6.0/24
    
     # ebay
     66.135.197.0/24
     66.135.209.0/24
    
     # gmail
     64.68.80.0/21
     64.233.160.0/19
     64.233.162.192/28
     64.233.170.192/28
     64.233.182.192/28
     64.233.184.192/28
     66.249.82.192/28
     66.249.92.192/28
     66.249.64.0/19
     66.102.0.0/20
     70.89.39.152/29
     70.90.219.48/29
     70.90.219.72/29
     72.14.192.0/18
     74.125.0.0/16
     209.85.128.0/17
     216.239.32.0/19
     216.239.56.240/28
    
     # postini
     63.146.199.13/32
     63.146.199.14/32
     63.71.11.123/32
     63.71.11.124/32
     64.18.0.0/20
     67.114.133.222/32
     68.123.185.46/32
     74.125.148.0/22
     204.14.232.0/22
     207.126.144.0/20
     208.111.151.5/32
     208.74.204.5/32
    
     # skynet.be
     195.238.2.0/24
     195.238.3.0/24
    
     # yahoo
     64.94.237.0/24
     66.163.160.0/19
     66.196.64.0/18
     66.218.64.0/19
     66.218.66.0/24 
     66.218.67.0/24
     66.218.69.0/24
     69.147.92.0/24
     73.30.0.0/16
     74.6.0.0/16
     206.190.32.0/19
     216.34.77.0/25
     216.136.226.0/24
    
    • Ricarica PF

    • Crea / usr / local / scripts / get-spamtrapped:

    #!/bin/sh /usr/local/sbin/spamdb | grep TRAPPED | cut -d '|' -f 2 
    • Crea /usr/local/etc/spamd/spamd.conf. Raccommand anche di usare gli elenchi di nixspam e ualbert.ca, ma alless avete bisogno delle liste spamtrapped e override. (NOTA: so che l'override è ridondante con le regole del rdr di PF – mi muovo abbastanza che voglio questa double protezione):
     tutto: uatraps: Override: nixspam: Override: spamtrapped: Override:
    
     # Università di Alberta colpi di grasso.
     # Indirizzi rimanere in esso per 24 ore dal momento in cui malfunzionano.
     uatraps: \
             :nero:\
             : msg = "Il tuo indirizzo% A ha inviato una mail a uno spamtrap ualberta.ca \ n \
             entro le ultime 24 ore ": \
             : Method = http: \
             : File = www.openbsd.org / spamd / traplist.gz:
    
     # Nixspam elenco delle fonti recenti.
     # Mirrored da http://www.heise.de/ix/nixspam
     nixspam: \
             :nero:\
             : msg = "Il tuo indirizzo% A è nell'elenco nixspam \ n \
             Vedere http://www.heise.de/ix/nixspam/dnsbl_en/ per i dettagli ": \
             : Method = http: \
             : File = www.openbsd.org / spamd / nixspam.gz:
    
     # IP intrappolati - in modo che possiamo bloccarli senza utilizzare greylisting
     spamtrapped: \
             :nero:\
             : msg = "Il tuo indirizzo% A ha inviato la posta a spamtrap su questo server \ n \
             entro le ultime 24 ore ": \
             : Method = exec: \
             : File = / usr / local / scripts / get-spamtrapped:
    
     ignorare: \
             :bianca:\
             : Metodo = file: \
             : File = / usr / local / etc / spamd / local-whitelist.txt:
    
    • Impostare spamd per eseguire all'avvio. Tieni presente che non sei in esecuzione in modalità solo blacklist e stai lanciando errori 5xx quando qualcuno cerca di submit a una list nera. Il primo è così spamdb gestirà l'archiviazione / scadenza di indirizzi intrappolati. Quest'ultimo è buone maniere. Aggiungi a /etc/rc.conf:
      obspamd_enable = "YES"
     obspamd_flags = "- 5"
    
    • Avvia spamd: /usr/local/etc/rc.d/obspamd inizio

    • Cronjob per eseguire la configuration di spamd in modalità solo blacklist una volta all'ora. La modalità Blacklist lo obbliga ad aggiornare la tabella <spamd> pf piuttosto che le tabelle interne di spamd. Poiché spamd sta semplicemente impegnando e memorizzando i dati, tutto il resto deve essere in PF. (sostituire XX con qualunque minuto dell'ora che lo desideri)

      # spamd-setup
     XX * * * * root / usr / locale / sbin / spamd-setup -b
    
    • Crea un utente spamtrap sulla tua macchina. Gli dò una directory home per le future estensioni:
      $ sudo pw useradd spamtrap -s / sbin / lologin -d / home / spamtrap -m -c "Spam Collector"
    
    • Crea / usr / local / scripts / spamtrap:
     #!/usr/local/bin/bash # rudimentary checking - more complex checking will be done by # the pfctl and spamdb commands ADDRESS=${1%%[!0-9.]*} if [[ ! ${#ADDRESS} = ${#1} ]] then echo "Invalid characters in IP address" exit 1 fi if [ ! ${ADDRESS} ] then echo "Usage: $0 <address>" exit 1 fi /usr/local/sbin/spamdb -t -a ${ADDRESS} if [ "$?" -ne 0 ] then echo "Failed to add ${ADDRESS} to spamdb" exit 1 fi /sbin/pfctl -qt spamd -T add ${ADDRESS} if [ "$?" -ne 0 ] then echo "Failed to add ${ADDRESS} to pf" exit 1 fi /usr/bin/logger -t spamtrap "Spamtrap caught ${ADDRESS}" 
    • Configurare un nuovo servizio di trasporto in /usr/local/etc/postfix/master.cf di Postfix. La bandiera X indica a Postfix di considerare questa consegna finale per il messaggio in modo che lo spammer ottiene un messaggio di successo. Notare l'utente – ha bisogno di accesso sudo allo script.
      # Spamtrap
     spazzolatrice unix - nn - - pipe
       flags = utente X = nessuno argv = / usr / local / bin / sudo / usr / locale / scripts / spamtrap $ {client_address}
    
    • Aggiungi sudoers:
      nessuno ALL = NOPASSWD: / usr / local / scripts / spamtrap
    
    • Creare una regola di trasporto che invia tutti i messaggi inviati a spamtrap @ localhost al servizio spamtrapper. Vedere "trasporto_maps postconf" per quale file da modificare. Il valore predefinito è / usr / local / etc / postfix / transport:
     spamtrap @ localhost spamtrapper
    
    • Riavvia il postfix. Invia un paio di messaggi a spamtrap @ localhost e verificare che il client di invio sia caricato in spamdb e nella tabella <spamd> pf.
     $ echo "Test" |  mail spamtrap @ localhost
     $ spamdb |  grep 127.0.0.1
     TRAPPED | 127.0.0.1 | 1.253.655,172 mila
     $ sudo pfctl -qt spamd -T spettacolo
        127.0.0.1
     $
    

    Due cose devono succedere per ciascuno dei tuoi indirizzi email spam. In primo luogo, deve risolvere una cassetta postale effettiva in modo che non venga rifiutata durante la window di dialogo SMTP. Ho usato gli utenti virtuali sottoposti a spamtrap @ localhost. In secondo luogo, deve corrispondere a una regola check_recipient_access in Postfix e get reindirizzato a spamtrap @ localhost, quindi gli utenti legittimi inclusi nell'elenco dei destinatari non dovranno mai vederlo. Come ho fatto questa parte:

    • Aggiungi a /usr/local/etc/postfix/main.cf:
      virtual_maps = hash: / usr / locale / etc / postfix / spamtrap_maps
     smtpd_recipient_restrictions = check_recipient_access hash: / usr / locale / etc / postfix / spamtrap_recipients
    
    • Formato di spamtrap_maps:
      spamtrappedaddress@domain.tld spamtrap
    
    • Formato di spamtrap_recipients:
      spamtrappedaddress@domain.tld REDIRECT spamtrap @ localhost
    
    • Aggiungere questi file al tuo Makefile e testare.

    A questo punto tutti i client che inviano messaggi agli indirizzi spamtrap devono essere aggiunti a spamdb e <spamd>. Nulla è ancora inviato a spamd. Per far funzionare l'integer meccanismo di block, aggiungere a /etc/pf.conf e ricaricare pf:

      nessun rdr proto tcp da <whitelist locale> alla port 25
     rdr pass proto tcp da <spamd> alla port 25 -> 127.0.0.1 port 8025
    

    E questo è tutto.

    POSSIBILI ESTENSIONI

    • Sarebbe banale modificare lo script spamtrap per memorizzare una copia del messaggio in un corpus spam Bayesiano.

    • Se ti iscrivi a tutti i servizi rsync RBL, è banale liberare il rimbalzo di tali messaggi a spamd.

    Beh ok, sembra che sei finito con la tua risposta. Basta non biasimare postfix-policyd, è molto più flessibile di quanto si possa pensare poiché fornisce diversi meccanismi per la tua lotta contro lo spam:

    Policyd è un plug-in anti-spam per Postfix (basato su MySQL) che utilizza lo strozzamento basato su Greylisting, Sender (su messaggi e / o volume per unità di tempo definite), Spamtrap monitoring / blacklist e HELO auto blacklisting.

    Non è necessario utilizzare tutti quei waepons e probabilmente avnetworking alcune regole di configuration nelle vostre smtpd_recipient_restrictions .

    In each modo, provare (e leggere i documenti) o build la tua soluzione – è a voi.

    solo un suggerimento rapido: utilizzare postfix-policyd, gli esempi sono inclusi nella configuration …

    configurarlo come un servizio di policy nei tuoi smtpd_recipient_restrictions nel tuo main.cf, vale a dire:

     ## call policyd check_policy_service inet:127.0.0.1:10031, 

    funziona come un antipasto di fascino insieme al greylisting abilitato. In bocca al lupo!

    La soluzione presentata da OP è piuttosto complessa. Ho usato un approccio più facile:

    Passaggio 1: Impostazione di un file filter /etc/postfix/spamtraps

    Questa è solo una semplice "list di partite": un'espressione regolare (per lo spamtrap) con un'azione da applicare quando è soddisfatta:

     /spam(master|trap)?\@.*/i DISCARD innesca spamtrap
     /funkyspammer\@.*/i DISCARD innesca spamtrap
    

    Regolare con i tuoi indirizzi.

    Passaggio 2: Imposta le regole in /etc/postfix/main.cf

    Cercare il block smtpd_recipient_restrictions e inserire la regola corrispondente prima della verifica della networking (less carico), ma dopo gli utenti autenticati. Per esempio:

     smtpd_recipient_restrictions = permission_sasl_authenticated
             permit_mynetworks
             check_recipient_access regexp: / etc / postfix / spamtraps
             ...
    

    Passo 3: Ricaricare il demone

    Naturalmente è necessario ricaricare subito il postfix, in modo che le tue modifiche abbiano effetto. A seconda della distribuzione, viene eseguito il service postfix reload , /etc/init.d/postfix reload o un command simile.

    Fase 4: Ora tenere gli spammer fuori

    Questo è un passaggio facoltativo che si potrebbe desiderare di prendere in considerazione: Usa Fail2ban e controlla il file di log di posta. Non appena qualcuno si rivolge a uno spamtrap, distriggersre quel IP (ad esempio per 30 minuti o forse per un'ora, non farlo troppo a lungo, poiché lo spammer potrebbe utilizzare un IP dinamico che diventa presto "innocente").

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.