doc:appunti:linux:sa:postfix
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
doc:appunti:linux:sa:postfix [2020/06/08 16:55] – [Smarthost] niccolo | doc:appunti:linux:sa:postfix [2024/02/26 10:18] (current) – [Socket in /var/run/ e nel chroot di Postfix: problema con tmpfs] 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 382: | Line 392: | ||
==== Socket in /var/run/ e nel chroot di Postfix: problema con tmpfs ==== | ==== Socket in /var/run/ e nel chroot di Postfix: problema con tmpfs ==== | ||
+ | |||
+ | Per **Debian 12 Bookworm** vedere la pagina dedicata **[[postfix_courier_authdaemon_debian_12]]**. | ||
Nelle moderne distribuzioni Debian (da 7 Wheezy in poi) la directory **''/ | Nelle moderne distribuzioni Debian (da 7 Wheezy in poi) la directory **''/ | ||
- | Quindi la **soluzione ottimale** è utilizzare un **mount bind** della directory che contiene il socket e **incaricare systemd** di effettuare il mount prima di avviare Postfix. Il punto di montaggio deve essere creato come visto nel paragrafo precedente, la //mount unit// va creata in **/ | + | La **soluzione ottimale** è utilizzare un **mount bind** della directory che contiene il socket e **incaricare systemd** di effettuare il mount prima di avviare Postfix. Il punto di montaggio deve essere creato come visto nel paragrafo precedente, la //mount unit// va creata in **/ |
< | < | ||
[Unit] | [Unit] | ||
Description=Mount Courier Authdaemon into Postfix chroot | Description=Mount Courier Authdaemon into Postfix chroot | ||
- | Requires=courier-authdaemon.service | + | Wants=courier-authdaemon.service |
- | After=courier-authdaemon.service | + | # A stronger dependency may cause a Systemd ordering cycle problem. |
+ | #Requires=courier-authdaemon.service | ||
+ | #After=courier-authdaemon.service | ||
[Mount] | [Mount] | ||
Line 411: | Line 425: | ||
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' | ||
Line 436: | Line 470: | ||
< | < | ||
smtp.example.org login_name: | smtp.example.org login_name: | ||
+ | </ | ||
+ | |||
+ | 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 610: | Line 651: | ||
- | ===== 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 637: | Line 678: | ||
===== Sender rewrite ===== | ===== Sender rewrite ===== | ||
- | È possibile riscrivere l' | + | È possibile riscrivere l' |
Postfix dispone della direttiva **'' | Postfix dispone della direttiva **'' | ||
Line 649: | Line 690: | ||
< | < | ||
- | root user@domain.tld | + | root user@domain.tld |
- | root@host.domain.tld | + | root@mail.mydomain.org |
</ | </ | ||
Line 685: | Line 726: | ||
</ | </ | ||
- | ===== 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 700: | Line 734: | ||
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 719: | Line 755: | ||
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 735: | Line 796: | ||
===== Lifetime dei messaggi ===== | ===== Lifetime dei messaggi ===== | ||
- | Un messaggio che non riesca a ad arrivare a destinazione, | + | 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. | 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 | ||
+ | </ | ||
===== Rimuovere messagi dalla coda ===== | ===== Rimuovere messagi dalla coda ===== | ||
Line 846: | Line 925: | ||
< | < | ||
- | postfix-mx/ | + | postfix-mx/ |
- | postfix-mx/ | + | |
+ | postfix-mx/ | ||
+ | | ||
</ | </ | ||
Line 863: | Line 944: | ||
-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 temporanea 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 879: | Line 997: | ||
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