User Tools

Site Tools


doc:appunti:linux:sa:postfix_spf_check

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:linux:sa:postfix_spf_check [2019/07/12 17:59] – [Manual Testing] niccolodoc:appunti:linux:sa:postfix_spf_check [2021/02/12 12:39] (current) – [SPF check con Postfix] niccolo
Line 2: Line 2:
  
 Installare il pacchetto Debian **postfix-policyd-spf-python**. Secondo quanto riportato dal sito **[[http://www.openspf.org/Software|openspf.org]]** l'implementazione Python è tecnicamente superiore a quella Perl. Installare il pacchetto Debian **postfix-policyd-spf-python**. Secondo quanto riportato dal sito **[[http://www.openspf.org/Software|openspf.org]]** l'implementazione Python è tecnicamente superiore a quella Perl.
 +
 +Secondo le specifiche **[[https://tools.ietf.org/id/draft-ietf-spfbis-4408bis-09.html|Sender Policy Framework]]** si possono effettuare dei controlli di validità durante una sessine SMTP verificando il contenuto dei comandi **HELO/EHLO** e **MAIL FROM**.
 +
 +Per implementare il check SPF su **MAIL FROM** si deve aggiungere al DNS un record di tipo **TXT** relativamente al dominio mittente, un esempio per il dominio example.org:
 +
 +<file>
 +example.org.  IN  TXT  "v=spf1 a:mail.example.org -all"
 +</file>
 +
 +Per implementare il check SPF su **HELO/EHLO** si deve anzitutto configurare correttamente il comando HELO sul server di posta che invia i messaggi, supponendo che il comando sarà **EHLO mail.example.org** e che un record di tipo **A** sia correttamente configurato per quel nome, si deve aggiungere un record **TXT** del tipo:
 +
 +<file>
 +mail.example.org.  IN  TXT  "v=spf1 a -all"
 +</file>
 +
 +**ATTENZIONE**! Nei **record TXT** è necessario specificare **il nome esatto** del **dominio** e quello dell'**host**, inoltre il nome dell'host deve avere un corrispondente record di tipo **A** (IPv4) ed eventualmente di tipo **AAA** (IPv6). Non è possibile definire i nome dell'host con un **CNAME** poiché il software Bind non accetta che un ''CNAME'' coesista con altri record, in questo caso un ''TXT''.
 +
 +===== Configurazione =====
  
 Il file di configurazione del programma è **/etc/postfix-policyd-spf-python/policyd-spf.conf**. Il file di configurazione del programma è **/etc/postfix-policyd-spf-python/policyd-spf.conf**.
Line 14: Line 32:
 skip_addresses = 127.0.0.0/8,::ffff:127.0.0.0/104,::1 skip_addresses = 127.0.0.0/8,::ffff:127.0.0.0/104,::1
 </file> </file>
 +
 +Il parametro **HELO_reject** determina il comportamento durante il check di **HELO/EHLO**, l'impostazione predefinita **Fail** significa che il reject avviene solo nel caso di SPF **Fail**, cioè di una situazione esplicitamente vietata. Si può essere più restrittivi con l'opzione **SPF_Not_Pass**, in tal caso il reject avviene anche nei casi di **Softfail** (//weak statement//, ad esempio la clausola ''~all''), **Neutral** (il DNS fornisce informazioni, ma vuote) e **PermError** (es. record SPF non valido).
  
 L'impostazione predefinita prevede il log su **/var/log/syslog**. L'impostazione predefinita prevede il log su **/var/log/syslog**.
Line 49: Line 69:
  
 Nei record SPF è possibile indicare direttamente anche degli indirizzi IPv6, usando la sintassi **%%ip6:2a01:4f8:d16:1355::2%%**. Più comodo è indicare il nome di un host, con la sintassi **%%a:testhost.rigacci.org%%** si includono automaticamente tutti i record di tipo **A** (IPv4) e di tipo **AAAA** (IPv6) associati al nome. Nel test del paragrafo precedente è possibile specificare un indirizzo IPv6 come //client_address//. Nei record SPF è possibile indicare direttamente anche degli indirizzi IPv6, usando la sintassi **%%ip6:2a01:4f8:d16:1355::2%%**. Più comodo è indicare il nome di un host, con la sintassi **%%a:testhost.rigacci.org%%** si includono automaticamente tutti i record di tipo **A** (IPv4) e di tipo **AAAA** (IPv6) associati al nome. Nel test del paragrafo precedente è possibile specificare un indirizzo IPv6 come //client_address//.
 +
 +===== Problema recort TXT ed helo_name =====
 +
 +**ATTENZIONE**! Per motivi non chiari il programma **policyd-spf** richiede il **record TXT** di **//helo_name//** prima di richidere quello del dominio del **//sender//**. Se tale record esiste, viene utilizzato il suo contenuto SPF per controllare l'indirizzo IP di //client_address//.
 +
 +Per questo motivo - quando si configura un server di posta - è opportuno controllare l'**//helo_name//**: se ad esso è **associato un record TXT**, questo deve includere l'indirizzo IP che verrà usato come **//client_address//**.
 +
 +Ad ogni modo - dopo che **policyd-spf** ha controllato la corrispondenza fra SPF di //helo_name// e //client_address// - verrà fatto anche il controllo tra SPF del dominio di //sender// e il //client_address//.
 +
 ===== Configurazione di Postfix ===== ===== Configurazione di Postfix =====
  
doc/appunti/linux/sa/postfix_spf_check.1562947190.txt.gz · Last modified: 2019/07/12 17:59 by niccolo