doc:appunti:linux:sa:postfix
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
doc:appunti:linux:sa:postfix [2019/08/23 15:47] – [Destinatari locali non qualificati] niccolo | doc:appunti:linux:sa:postfix [2023/12/04 15:34] – [Postgrey] niccolo | ||
---|---|---|---|
Line 127: | Line 127: | ||
A tutti gli effetti si ha quindi un **destinatario locale non qualificato**; | A tutti gli effetti si ha quindi un **destinatario locale non qualificato**; | ||
- | Il pacchetto Postfix di Debian configura **myorigin = / | + | Il pacchetto Postfix di Debian configura **myorigin = / |
< | < | ||
- | warning: do not list domain | + | warning: do not list domain |
</ | </ | ||
- | Se davvero si deve gestire | + | Se esiste |
< | < | ||
- | myorigin = myserver | + | #myorigin = / |
- | mydestination = myserver | + | myorigin = mail.mydomain.org |
+ | mydestination = mail.mydomain.org | ||
</ | </ | ||
+ | |||
+ | :!: **ATTENZIONE 1**: Il contenuto di **myorigin** viene usato anche per qualificare l'// | ||
+ | |||
+ | :!: **ATTENZIONE 2**: Il contenuto di **myorigin** viene usato anche per qualificare i messaggi di errore **MAILER-DAEMON@**, | ||
+ | |||
+ | |||
===== Crittografia TLS ===== | ===== Crittografia TLS ===== | ||
Line 235: | Line 242: | ||
* Postfix => saslauthd => PAM => /etc/shadow | * Postfix => saslauthd => PAM => /etc/shadow | ||
- | In alternativa è possibile appoggiare Postfix all' | + | Questa implementazione è fornita dal pacchetto **sasl2-bin** e va sotto il nome **Cyrus SASL**. |
Installare i pacchetti **sasl2-bin** e **libsasl2-modules**. | Installare i pacchetti **sasl2-bin** e **libsasl2-modules**. | ||
Line 253: | Line 260: | ||
systemctl stop saslauthd.service | systemctl stop saslauthd.service | ||
rmdir / | rmdir / | ||
+ | mkdir -p / | ||
+ | chown root:sasl / | ||
+ | chmod 0710 / | ||
ln -s / | ln -s / | ||
systemctl start saslauthd.service | systemctl start saslauthd.service | ||
Line 262: | Line 272: | ||
< | < | ||
- | dpkg-statoverride --add root sasl 750 / | + | dpkg-statoverride --add root sasl 710 / |
</ | </ | ||
Line 360: | Line 370: | ||
chmod 0755 / | chmod 0755 / | ||
- | dpkg-statoverride --add courier courier | + | dpkg-statoverride --add courier courier |
adduser postfix courier | adduser postfix courier | ||
</ | </ | ||
Line 411: | Line 421: | ||
Al successivo reboot troveremo il socket authdaemon disponibile nel chroot di Postfix. | Al successivo reboot troveremo il socket authdaemon disponibile nel chroot di Postfix. | ||
- | ===== Smarthost ===== | + | ===== Smarthost |
Per consegnare tutta la posta in uscita ad un relay SMTP si aggiunge in **''/ | Per consegnare tutta la posta in uscita ad un relay SMTP si aggiunge in **''/ | ||
< | < | ||
- | relayhost = smtp.example.org | + | relayhost = smtp.example.org:587 |
</ | </ | ||
- | Se lo smarthost richiede | + | Nell' |
+ | |||
+ | **ATTENZIONE**: | ||
+ | |||
+ | Lo smarthost generico viene dichiarato | ||
< | < | ||
relayhost = smtp.example.org | relayhost = smtp.example.org | ||
+ | </ | ||
+ | |||
+ | Se lo smarthost richiede autenticazione con login e password, questi sono i parametri necessari a configurare Postfix come client. Gli stessi parametri sono necessari ogni qual volta Postfix deve agire come client autenticato, | ||
+ | |||
+ | < | ||
+ | # Enable SASL authentication in the Postfix SMTP client. | ||
smtp_sasl_auth_enable = yes | smtp_sasl_auth_enable = yes | ||
+ | # Credentials for SASL authentication to remote hosts. | ||
smtp_sasl_password_maps = hash:/ | smtp_sasl_password_maps = hash:/ | ||
+ | # Filter the remote SMTP server' | ||
smtp_sasl_mechanism_filter = plain, login | smtp_sasl_mechanism_filter = plain, login | ||
- | smtp_sasl_security_options = | + | # We use (encrypted) plaintext passwords; the default is noplaintext, |
+ | smtp_sasl_security_options = noanonymous | ||
+ | # The default SMTP TLS security level for the Postfix SMTP client: may or encrypt. | ||
smtp_tls_security_level = may | smtp_tls_security_level = may | ||
</ | </ | ||
- | L' | + | L' |
+ | |||
+ | Ricordarsi che per utilizzare SSL si deve installare il pacchetto **libsasl2-modules**. | ||
+ | |||
+ | L' | ||
+ | |||
+ | L' | ||
Le credenziali per l' | Le credenziali per l' | ||
< | < | ||
- | smtp.example.org | + | smtp.example.org |
+ | </ | ||
+ | |||
+ | Se non si installa il pacchetto **libsasl2-modules** l' | ||
+ | |||
+ | < | ||
+ | warning: SASL authentication failure: No worthy mechs found | ||
+ | SASL authentication failed; cannot authenticate to server smtp.example.org[10.11.12.13]: | ||
</ | </ | ||
Line 476: | Line 513: | ||
</ | </ | ||
+ | ===== Esempio di RBL zen.spamhaus.org ===== | ||
+ | |||
+ | In generale le RBL (real-time blackhole list) sono in effetti delle **[[wpit> | ||
+ | |||
+ | Il funzionamento di **zen.spamhaus.org** è spiegato nella pagina **[[https:// | ||
+ | |||
+ | < | ||
+ | dig +short 82.61.44.194.zen.spamhaus.org @dns.provider.tld | ||
+ | 127.0.0.4 | ||
+ | 127.0.0.3 | ||
+ | </ | ||
+ | |||
+ | anzitutto notiamo che la richiesta è stata inoltrata al server DNS **dns.provider.tld**, | ||
+ | |||
+ | Per avere un responso più descrittivo è possibile chiedere il **record di tipo TXT**: | ||
+ | |||
+ | < | ||
+ | dig +short -t TXT 82.61.44.194.zen.spamhaus.org @127.0.0.1 | ||
+ | " | ||
+ | " | ||
+ | </ | ||
+ | |||
+ | Attenzione al server DNS utilizzato! Alcuni server DNS pubblici e gratuiti (specificatamente quello di **Google 8.8.8.8**) non rispondono a questo tipo di query. Purtroppo un risultato negativo viene interpretato da Postifix come //indirizzo IP pulito//. È opportuno installare un server DNS locale per una maggiore efficienza delle interrogazioni. | ||
===== smtpd_sender_restrictions ===== | ===== smtpd_sender_restrictions ===== | ||
Line 587: | Line 647: | ||
- | ===== Relay to network ===== | + | ===== Relay from network ===== |
Per accettare la posta e farne il relay da un particolare indirizzo IP o network si usa la direttiva **mynetworks** di **''/ | Per accettare la posta e farne il relay da un particolare indirizzo IP o network si usa la direttiva **mynetworks** di **''/ | ||
Line 614: | Line 674: | ||
===== Sender rewrite ===== | ===== Sender rewrite ===== | ||
- | È possibile riscrivere l' | + | È possibile riscrivere l' |
Postfix dispone della direttiva **'' | Postfix dispone della direttiva **'' | ||
Line 626: | Line 686: | ||
< | < | ||
- | root user@domain.tld | + | root |
+ | root@mail.mydomain.org | ||
</ | </ | ||
Line 633: | Line 694: | ||
===== Destinatari locali non qualificati ===== | ===== Destinatari locali non qualificati ===== | ||
- | Ad un destinatario privo di dominio (es. **backup** o **root**) viene aggiunto il dominio specificato dall' | + | Ad un destinatario privo di dominio (es. **backup** o **root**) viene aggiunto il dominio specificato dall' |
Questa riscrittura avviene prima di applicare il contenuto di **/ | Questa riscrittura avviene prima di applicare il contenuto di **/ | ||
Line 661: | Line 722: | ||
</ | </ | ||
- | ===== Delay Warning ===== | + | ===== Relay by recipient or domain |
- | + | ||
- | Per impostazione predefinita Postfix non avvisa dei ritardi di consegna dei messaggi, se si vuole attivare questa opzione si imposta il parametro seguente: | + | |
- | + | ||
- | < | + | |
- | delay_warning_time = 4h | + | |
- | </ | + | |
- | ===== Relay domains | + | |
To relay mail for non-local domains (domains not in '' | To relay mail for non-local domains (domains not in '' | ||
Line 676: | Line 730: | ||
relay_domains = www.mydomain.org, | relay_domains = www.mydomain.org, | ||
</ | </ | ||
+ | |||
+ | **WARNING**: | ||
If you want to relay mail to a specific host - eventually not the one listed in MX records - you must provide a specific **transport map**, writing a file **''/ | If you want to relay mail to a specific host - eventually not the one listed in MX records - you must provide a specific **transport map**, writing a file **''/ | ||
Line 695: | Line 751: | ||
user@local.domain | user@local.domain | ||
</ | </ | ||
+ | |||
+ | If the relay host requires authentication, | ||
+ | |||
+ | |||
+ | ===== Relay by sender address ===== | ||
+ | |||
+ | It is possibile to select a different relay path for messages based on sender address. Add the directive **sender_dependent_relayhost_maps** to **main.cf**: | ||
+ | |||
+ | < | ||
+ | sender_dependent_relayhost_maps = hash:/ | ||
+ | </ | ||
+ | |||
+ | Each line of the file must contain an expression matching the full sender address or the entire domain (preceeded by the **@**), and the name or address of the relay host: | ||
+ | |||
+ | < | ||
+ | username@rigacci.org | ||
+ | @domain2.org | ||
+ | </ | ||
+ | |||
+ | Remember to recompile the file whenever you change it using **postmap** (no need to reload Postfix). | ||
+ | |||
+ | All the standard requirements for a relay host are necessary: the relay host must be listed into the **SPF record** of the mail domain and the relay host should accept the original sender (e.g. via the **mynetworks** Postfix directive). | ||
+ | |||
+ | If the relay host requires authentication, | ||
+ | |||
===== HELO hostname ===== | ===== HELO hostname ===== | ||
Line 707: | Line 788: | ||
# If we don't have the name registered as an A record, use an IP literal: | # If we don't have the name registered as an A record, use an IP literal: | ||
# | # | ||
+ | </ | ||
+ | |||
+ | ===== Lifetime dei messaggi ===== | ||
+ | |||
+ | Un messaggio che non riesca a ad arrivare a destinazione, | ||
+ | |||
+ | I messaggi di errore hanno un lifetime a parte, definito dal parametro **bounce_queue_lifetime**. Anche in questo caso il valore predefinito di 5 giorni potrebbe essere eccessivo. | ||
+ | |||
+ | < | ||
+ | # The message is considered undeliverable if a temporary error | ||
+ | # persists for more than " | ||
+ | maximal_queue_lifetime = 1d | ||
+ | |||
+ | # A bounce message becomes undeliverable if queued for more | ||
+ | # than " | ||
+ | bounce_queue_lifetime = 6h | ||
+ | </ | ||
+ | |||
+ | ===== Delay Warning ===== | ||
+ | |||
+ | Per impostazione predefinita Postfix non avvisa dei ritardi di consegna dei messaggi, se si vuole attivare questa opzione si imposta il parametro seguente: | ||
+ | |||
+ | < | ||
+ | delay_warning_time = 4h | ||
</ | </ | ||
Line 816: | Line 921: | ||
< | < | ||
- | postfix-mx/ | + | postfix-mx/ |
- | postfix-mx/ | + | |
+ | postfix-mx/ | ||
+ | | ||
</ | </ | ||
Line 833: | Line 940: | ||
-o smtpd_client_restrictions=permit_sasl_authenticated, | -o smtpd_client_restrictions=permit_sasl_authenticated, | ||
</ | </ | ||
+ | |||
+ | ===== Debug ===== | ||
+ | |||
+ | Un sistema rapido per tracciare i problemi rispetto ad **uno o più host specifici**, | ||
+ | |||
+ | < | ||
+ | debug_peer_list = 192.168.10.12 10.0.0.13 [2a01: | ||
+ | debug_peer_level = 2 | ||
+ | </ | ||
+ | |||
+ | |||
+ | ====== Problemi SSL ====== | ||
+ | |||
+ | Se un server remoto tenta di stabilire una connessione cifrata ma incontra qualche problema, si può riscontrare questo errore nel log: | ||
+ | |||
+ | < | ||
+ | postfix/ | ||
+ | </ | ||
+ | |||
+ | Se si ha l' | ||
+ | |||
+ | Una soluzione temporaneta può essere quella di inibire il flag STARTTLS in risposta al comando EHLO, cioè non annunciare SSL a quel particolare host. Questo comportamento si ottiene con una riga in main.cf: | ||
+ | |||
+ | < | ||
+ | # Discard some EHLO features for specific servers. | ||
+ | # E.g. disable starttls with broken servers. | ||
+ | smtpd_discard_ehlo_keyword_address_maps = hash:/ | ||
+ | </ | ||
+ | |||
+ | E il relativo file **smtpd_discard_ehlo_keywords** che contiene effettivamente l' | ||
+ | |||
+ | < | ||
+ | 124.132.32.203 starttls | ||
+ | </ | ||
+ | |||
+ | Il file va compilato con postmap, ecc. | ||
+ | |||
====== Postgrey ====== | ====== Postgrey ====== | ||
Line 849: | Line 993: | ||
Le opzioni si configurano in **''/ | Le opzioni si configurano in **''/ | ||
+ | |||
+ | Un messaggio rifiutato temporaneamente genera questa riga in **/ | ||
+ | |||
+ | < | ||
+ | postgrey[760]: | ||
+ | client_name=server.example.org, | ||
+ | sender=niccolo@domain.tld, | ||
+ | </ | ||
+ | |||
+ | Quando invece il messaggio viene accettato questo è il log: | ||
+ | |||
+ | < | ||
+ | postgrey[760]: | ||
+ | client_name=server.example.org, | ||
+ | sender=niccolo@domain.tld, | ||
+ | </ | ||
+ | |||
+ | Con il tool **postgreyreport** è possibile interrogare il database di postgrey (in **/ | ||
+ | |||
+ | < | ||
+ | cat / | ||
+ | </ |
doc/appunti/linux/sa/postfix.txt · Last modified: 2024/02/26 10:18 by niccolo