User Tools

Site Tools


doc:appunti:linux:sa:postfix

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 [2023/10/20 10:55] – [Relay by recipient or domain] niccolodoc:appunti:linux:sa:postfix [2024/02/26 09:18] (current) – [Socket in /var/run/ e nel chroot di Postfix: problema con tmpfs] niccolo
Line 130: Line 130:
  
 <file> <file>
-warning: do not list domain domain.tld in BOTH mydestination and virtual_alias_domains+warning: do not list domain mydomain.org in BOTH mydestination and virtual_alias_domains
 </file> </file>
  
Line 137: Line 137:
 <file> <file>
 #myorigin = /etc/mailname #myorigin = /etc/mailname
-myorigin = myserver +myorigin = mail.mydomain.org 
-mydestination = myserver localhost.localdomain localhost+mydestination = mail.mydomain.org localhost.localdomain localhost
 </file> </file>
 +
 +:!: **ATTENZIONE 1**: Il contenuto di **myorigin** viene usato anche per qualificare l'//envelope sender// dei messaggi generati automaticamente (ad esempio dal tool ''vacation''). È opportuno quindi che si tratti di un dominio completo, altrimenti è probabile che il messaggio venga rifiutato dal ricevente con l'errore **//Sender address rejected: need fully-qualified address//**. Non è strettamente necessario che si tratti di un dominio che riceve mail (cioè con record MX), in genere dovrebbe essere sufficiente che un mittente valido sia indicato nell'header ''From:''.
 +
 +:!: **ATTENZIONE 2**: Il contenuto di **myorigin** viene usato anche per qualificare i messaggi di errore **MAILER-DAEMON@**, è opportuno quindi che consenta di individuare il sistema di origine piuttosto che un dominio email. Quindi anche in questo caso si suggerisce di usare qualcosa del tipo ''mail.mydomain.org''.
 +
 +
 ===== Crittografia TLS ===== ===== Crittografia TLS =====
  
Line 254: Line 260:
 systemctl stop saslauthd.service systemctl stop saslauthd.service
 rmdir /var/run/saslauthd rmdir /var/run/saslauthd
 +mkdir -p /var/spool/postfix/var/run/saslauthd
 +chown root:sasl /var/spool/postfix/var/run/saslauthd
 +chmod 0710 /var/spool/postfix/var/run/saslauthd
 ln -s /var/spool/postfix/var/run/saslauthd /var/run ln -s /var/spool/postfix/var/run/saslauthd /var/run
 systemctl start saslauthd.service systemctl start saslauthd.service
Line 263: Line 272:
  
 <code> <code>
-dpkg-statoverride --add root sasl 750 /var/spool/postfix/var/run/saslauthd+dpkg-statoverride --add root sasl 710 /var/spool/postfix/var/run/saslauthd
 </code> </code>
  
Line 383: 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 **''/var/run/''** viene creata in tmpfs e quindi al reboot è totalmente vuota. Questo è un problema perché la soluzione con il link simbolico vista al paragrafo precedente non sopravvive al reboot. Una soluzione poco elegante è modificare lo script **''/etc/init.d/courier-authdaemon''**, in modo che crei il link prima di avviare il servizio; inoltre questo è sconsigliato se si utilizza il moderno **systemd** (a partire da Debian 8 Jessie). Nelle moderne distribuzioni Debian (da 7 Wheezy in poi) la directory **''/var/run/''** viene creata in tmpfs e quindi al reboot è totalmente vuota. Questo è un problema perché la soluzione con il link simbolico vista al paragrafo precedente non sopravvive al reboot. Una soluzione poco elegante è modificare lo script **''/etc/init.d/courier-authdaemon''**, in modo che crei il link prima di avviare il servizio; inoltre questo è sconsigliato se si utilizza il moderno **systemd** (a partire da Debian 8 Jessie).
  
-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 **/etc/systemd/system/**, deve avere il nome esatto **var-spool-postfix-var-run-courier-authdaemon.mount** e contiene:+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 **/etc/systemd/system/**, deve avere il nome esatto **var-spool-postfix-var-run-courier-authdaemon.mount** e contiene:
  
 <file> <file>
 [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 445: Line 458:
 </file> </file>
  
-L'opzione **smtp_tls_security_level** definisce se deve essere usata una connessione crittografata TLS; con **may** è facoltativa, per renderela obbligatoria va impostato su **encrypt**. È possibile rendere la cifratura obbligatoria solo se siamo certi che la nostra installazione agirà da client verso server che dispongono tutti di TLS, può essere il caso se utilizziamo sempre un solo relayhost. Ricordarsi che per utilizzare SSL si deve installare il pacchetto **libsasl2-modules**.+L'opzione **smtp_tls_security_level** definisce se deve essere usata una connessione crittografata TLS; con **may** è facoltativa, per renderela obbligatoria va impostato su **encrypt**. È possibile rendere la cifratura obbligatoria solo se siamo certi che la nostra installazione agirà da client verso server che dispongono tutti di TLS, può essere il caso se utilizziamo sempre un solo relayhost. Ad oggi (fine 2023) una buona percentuale di mail exchanger primari (MX di domini mail) non supportano alcuna crittografia. 
 + 
 +Ricordarsi che per utilizzare SSL si deve installare il pacchetto **libsasl2-modules**.
  
 L'opzione **smtp_sasl_mechanism_filter** non è strettamente necessaria in quanto abbiamo già definito la lista meccanismi supportati in **/etc/postfix/sasl/smtpd.conf**, che sono ''mech_list: PLAIN LOGIN''. L'opzione **smtp_sasl_mechanism_filter** non è strettamente necessaria in quanto abbiamo già definito la lista meccanismi supportati in **/etc/postfix/sasl/smtpd.conf**, che sono ''mech_list: PLAIN LOGIN''.
Line 663: Line 678:
 ===== Sender rewrite ===== ===== Sender rewrite =====
  
-È possibile riscrivere l'indirizzo di provenienza di una mail, utile soprattutto per le mail generate in automatico da account locale, che altrimenti potrebbero avere indirizzi brutti e poco graditi ai filtri antispam, del tipo **root@localhost** oppure **nagios@host.domain.tld**.+È possibile riscrivere l'indirizzo di provenienza di una mail, utile soprattutto per le mail generate in automatico da account locale, che altrimenti potrebbero avere indirizzi brutti e poco graditi ai filtri antispam, del tipo **root@localhost** oppure **nagios@mail.mydomain.org**.
  
 Postfix dispone della direttiva **''sender_canonical_maps''**; basta aggiungere in main.cf qualcosa del genere: Postfix dispone della direttiva **''sender_canonical_maps''**; basta aggiungere in main.cf qualcosa del genere:
Line 675: Line 690:
  
 <file> <file>
-root                  user@domain.tld +root                    user@domain.tld 
-root@host.domain.tld  user@domain.tld+root@mail.mydomain.org  user@domain.tld
 </file> </file>
  
Line 762: Line 777:
  
 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). 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, you may need to configure the Postfix client behaviour, see the **[[#smarthost_relayhost|relayhost paragraph]]**.
  
 ===== HELO hostname ===== ===== HELO hostname =====
Line 936: Line 953:
 debug_peer_level = 2 debug_peer_level = 2
 </file> </file>
 +
 +
 +====== Problemi SSL ======
 +
 +Se un server remoto tenta di stabilire una connessione cifrata, ma incontra qualche problema, si può riscontrare questo errore nel log:
 +
 +<code>
 +postfix/smtpd[1630564]: SSL_accept error from unknown[124.132.32.203]: lost connection
 +</code>
 +
 +Se si ha l'impostazione **smtpd_tls_security_level = may**, il server remoto dovrebbe riprovare senza crittografia, ma in caso di server difettosi può essere impossibile ricevere mail da quell'host.
 +
 +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:
 +
 +<file>
 +# Discard some EHLO features for specific servers.
 +# E.g. disable starttls with broken servers.
 +smtpd_discard_ehlo_keyword_address_maps = hash:/etc/postfix/smtpd_discard_ehlo_keywords
 +</file>
 +
 +E il relativo file **smtpd_discard_ehlo_keywords** che contiene effettivamente l'esclusione:
 +
 +<file>
 +124.132.32.203 starttls
 +</file>
 +
 +Il file va compilato con postmap, ecc.
  
  
doc/appunti/linux/sa/postfix.1697799312.txt.gz · Last modified: 2023/10/20 10:55 by niccolo