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 [2019/08/23 15:48] – [Destinatari locali non qualificati] niccolodoc: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**; in questo caso il destinatario viene qualificato automaticamente con **$myorigin**, diventando l'indirizzo **%%login_name@$myorigin%%**. È quindi necessario che **$myorigin** sia contenuto in **$mydestination** perché la consegna venga effettuata. A tutti gli effetti si ha quindi un **destinatario locale non qualificato**; in questo caso il destinatario viene qualificato automaticamente con **$myorigin**, diventando l'indirizzo **%%login_name@$myorigin%%**. È quindi necessario che **$myorigin** sia contenuto in **$mydestination** perché la consegna venga effettuata.
  
-Il pacchetto Postfix di Debian configura **myorigin = /etc/mailname** e giustamente mette lo stesso mailname anche in **mydestination**. Se però si configura un **virtual domain con lo stesso nome**, otterremo il seguente warning nei file di log:+Il pacchetto Postfix di Debian configura **myorigin = /etc/mailname** e giustamente mette lo stesso mailname anche in **mydestination**. Se però si desidera un **virtual domain con lo stesso nome**, otterremo il seguente warning nei file di log:
  
 <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>
  
-Se davvero si deve gestire un virtual domain con quel nome, la soluzione più corretta è utilizzare un nome fittizio per //myorigin// aggiungere quello in //mydestination//:+Se esiste un virtual domain con quel nome, la soluzione più corretta è utilizzare un **nome ad-hoc** per **myorigin** aggiungerlo **mydestination**:
  
 <file> <file>
-myorigin = myserver +#myorigin = /etc/mailname 
-mydestination = myserver localhost.localdomain localhost+myorigin = mail.mydomain.org 
 +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 235: Line 242:
   *  Postfix => saslauthd => PAM => /etc/shadow   *  Postfix => saslauthd => PAM => /etc/shadow
  
-In alternativa è possibile appoggiare Postfix all'autenticazione **Courier** **Dovecot** (sistemi POP/IMAP) per sfruttare ad esempio l'autenticazione con utenti virtuali usando l'indirizzo email invece del login Unix.+Questa implementazione è fornita dal pacchetto **sasl2-bin** e va sotto il nome **Cyrus SASL**. In alternativa è possibile appoggiare Postfix all'autenticazione **Courier** oppure a quella **Dovecot**, si tratta di sistemi POP/IMAP che offrono possibilità aggiuntive, come quella di poter fare l'autenticazione con utenti virtuali usando l'indirizzo email invece del login Unix. Per istruzioni su queste due alternative vedere **[[#autenticazione_smtp_su_courier_authdaemon|Autenticazione SMTP su Courier Authdaemon]]** oppure **[[postfix_spamassassin_clamav_dovecot#postfix_sasl_over_dovecot_auth|Postfix SASL su Dovecot]]**.
  
 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 /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 262: 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 360: Line 370:
 chmod 0755 /var/spool/postfix/var/run/courier/authdaemon/ chmod 0755 /var/spool/postfix/var/run/courier/authdaemon/
  
-dpkg-statoverride --add courier courier 755 /var/spool/postfix/var/run/courier/authdaemon+dpkg-statoverride --add courier courier 750 /var/spool/postfix/var/run/courier/authdaemon
 adduser postfix courier adduser postfix courier
 </code> </code>
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 **''/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 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 (relayhost) =====
  
 Per consegnare tutta la posta in uscita ad un relay SMTP si aggiunge in **''/etc/postfix/main.cf''**: Per consegnare tutta la posta in uscita ad un relay SMTP si aggiunge in **''/etc/postfix/main.cf''**:
  
 <file> <file>
-relayhost = smtp.example.org+relayhost = smtp.example.org:587
 </file> </file>
  
-Se lo smarthost richiede autenticazione con login e password questi sono i parametri necessari:+Nell'esempio sopra si utilizza il servizio **submission** sulla porta **TCP/587**, se non viene specificata la porta verrà utilizzato **snmp** su porta **TCP/25**. 
 + 
 +**ATTENZIONE**: secondo le specifiche più recenti ([[https://tools.ietf.org/html/rfc6409|RFC 6409]]) l'invio autenticato deve avvenire sulla porta **submission**, pertanto molti server di posta non accettano più l'autenticazione sulla porta **smtp**. Se il server che funge da relayhost è basato su Postfix, la necessità dell'autenticazione è determinata dal parametro **smtpd_sasl_auth_enable**. Esso viene impostato in **main.cf** relativamente al servizio **smtp** oppure in **master.cf** relativamente al servizio **submission** (nella apposita sezione), se il relayhost vuole rifiutare il submission ai client non autenticati, deve usare l'opzione ''smtpd_client_restrictions=permit_sasl_authenticated,reject''
 + 
 +Lo smarthost generico viene dichiarato con questa direttiva:
  
 <file> <file>
 relayhost = smtp.example.org relayhost = smtp.example.org
 +</file>
 +
 +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, ad esempio quando si stabiliscono dei transport specifici per sender o per recipient.
 +
 +<file>
 +# 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:/etc/postfix/sasl_passwd smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
 +# Filter the remote SMTP server's list of offered SASL mechanisms.
 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, noanonymous. 
 +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
 </file> </file>
  
-L'opzione **''smtp_tls_security_level''** definisce se deve essere usata una connessione TLS.+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_security_options** deve essere specificata, altrimenti il valore predefinito **noplaintext, noanonymous** impedirebbe di usare il //mechanism plain// (viene effettivamente trasmessa la password, ma su canale cifrato).
  
 Le credenziali per l'autenticazione vanno messe nel file **''/etc/postfix/sasl_passwd''** che deve essere compilato con **''postmap''**: Le credenziali per l'autenticazione vanno messe nel file **''/etc/postfix/sasl_passwd''** che deve essere compilato con **''postmap''**:
  
 <file> <file>
-smtp.example.org login:password+smtp.example.org login_name:password 
 +</file> 
 + 
 +Se non si installa il pacchetto **libsasl2-modules** l'errore nei log è qualcosa di simile: 
 + 
 +<file> 
 +warning: SASL authentication failure: No worthy mechs found 
 +SASL authentication failed; cannot authenticate to server smtp.example.org[10.11.12.13]: no mechanism available
 </file> </file>
  
Line 476: Line 517:
 </file> </file>
  
 +===== Esempio di RBL zen.spamhaus.org =====
 +
 +In generale le RBL (real-time blackhole list) sono in effetti delle **[[wpit>DNSBL|DNS-based Blackhole List]]** cioè utilizzano il meccanismo del DNS per scoprire se un indirizzo IP è nella blacklist o meno.
 +
 +Il funzionamento di **zen.spamhaus.org** è spiegato nella pagina **[[https://www.spamhaus.org/faq/section/DNSBL%20Usage#366|Frequently Asked Questions]]**, vediamo ad esempio come verificare lo stato dell'indirizzo IP **194.44.61.82**. Anzitutto si deve invertire l'ordine degli ottetti e fare una query DNS sul nome **82.61.44.194.zen.spamhaus.org**. È possibile effettuare da riga di comando Unix una richiesta per un **record di tipo A** (è la richiesta che effettua in automatico Postfix):
 +
 +<code>
 +dig +short 82.61.44.194.zen.spamhaus.org @dns.provider.tld
 +127.0.0.4
 +127.0.0.3
 +</code>
 +
 +anzitutto notiamo che la richiesta è stata inoltrata al server DNS **dns.provider.tld**, la risposta è stata positiva, con ben due risultati. I codici 127.0.0.x sono in effetti una convenzione di ciascuna RBL per significare lo stato dell'indirizzo IP; nel nostro caso risulta elencato sia in **Spamhaus SBL CSS** che in **CBL**.
 +
 +Per avere un responso più descrittivo è possibile chiedere il **record di tipo TXT**:
 +
 +<code>
 +dig +short -t TXT 82.61.44.194.zen.spamhaus.org @127.0.0.1
 +"https://www.spamhaus.org/query/ip/194.44.61.82"
 +"https://www.spamhaus.org/sbl/query/SBLCSS"
 +</code>
 +
 +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 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 **''/etc/postfix/main.cf''**: Per accettare la posta e farne il relay da un particolare indirizzo IP o network si usa la direttiva **mynetworks** di **''/etc/postfix/main.cf''**:
Line 614: 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@hostname**.+È 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 626: Line 690:
  
 <file> <file>
-root user@domain.tld+root                    user@domain.tld 
 +root@mail.mydomain.org  user@domain.tld
 </file> </file>
  
Line 661: Line 726:
 </file> </file>
  
-===== 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: +
- +
-<file> +
-delay_warning_time = 4h +
-</file> +
-===== Relay domains =====+
  
 To relay mail for non-local domains (domains not in ''mydestination'' and not in local virtual domains), use the **''relay_domains''** setting: To relay mail for non-local domains (domains not in ''mydestination'' and not in local virtual domains), use the **''relay_domains''** setting:
Line 676: Line 734:
 relay_domains = www.mydomain.org, mydomain.org relay_domains = www.mydomain.org, mydomain.org
 </file> </file>
 +
 +**WARNING**: The receiving mail server will eventually check the SPF record and thus the relaying server should be placed into the SPF authorized hosts for the relayed domains.
  
 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 **''/etc/postfix/transport''** with something like this: 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 **''/etc/postfix/transport''** with something like this:
Line 695: Line 755:
 user@local.domain  smtp:remote.realay.host user@local.domain  smtp:remote.realay.host
 </file> </file>
 +
 +If the relay host requires authentication, you may need to configure the Postfix client behaviour, see the **[[#smarthost_relayhost|relayhost paragraph]]**.
 +
 +
 +===== 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**:
 +
 +<code>
 +sender_dependent_relayhost_maps = hash:/etc/postfix/sender_dependent_relayhost_maps
 +</code>
 +
 +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:
 +
 +<file>
 +username@rigacci.org     relay2.rigacci.org
 +@domain2.org             relay3.rigacci.org
 +</file>
 +
 +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, you may need to configure the Postfix client behaviour, see the **[[#smarthost_relayhost|relayhost paragraph]]**.
 +
 ===== HELO hostname ===== ===== HELO hostname =====
  
Line 707: Line 792:
 # 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:
 #smtp_helo_name = [78.47.31.140] #smtp_helo_name = [78.47.31.140]
 +</file>
 +
 +===== Lifetime dei messaggi =====
 +
 +Un messaggio che non riesca a ad arrivare a destinazione, ma che non abbia un errore fatale, resta nella coda per **maximal_queue_lifetime** (valore predefinito 5 giorni). Probabilmente 5 giorni sono troppi, perché il mittente viene notificato del problema troppo tardi. Vedere più avanti anche il parametro **delay_warning_time**.
 +
 +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.
 +
 +<file>
 +# The message is considered undeliverable if a temporary error
 +# persists for more than "maximal_queue_lifetime" (default: 5d).
 +maximal_queue_lifetime = 1d
 +
 +# A bounce message becomes undeliverable if queued for more
 +# than "bounce_queue_lifetime" (default: 5d).
 +bounce_queue_lifetime = 6h
 +</file>
 +
 +===== 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:
 +
 +<file>
 +delay_warning_time = 4h
 </file> </file>
  
Line 816: Line 925:
  
 <file> <file>
-postfix-mx/anvil[919]: statistics: max connection rate 8/60s for (62.48.51.61:25:110.52.2.253) at Oct 15 23:26:21 +postfix-mx/anvil[919]: statistics: 
-postfix-mx/anvil[919]: statistics: max connection count 8 for (62.48.51.61:25:110.52.2.253) at Oct 15 23:26:21+    max connection rate 8/60s for (62.48.51.61:25:110.52.2.253) at Oct 15 23:26:21 
 +postfix-mx/anvil[919]: statistics: 
 +    max connection count 8 for (62.48.51.61:25:110.52.2.253) at Oct 15 23:26:21
 </file> </file>
  
Line 833: Line 944:
   -o smtpd_client_restrictions=permit_sasl_authenticated,reject   -o smtpd_client_restrictions=permit_sasl_authenticated,reject
 </file> </file>
 +
 +===== Debug =====
 +
 +Un sistema rapido per tracciare i problemi rispetto ad **uno o più host specifici**, è quello di aggiungere la seguente direttiva in **/etc/postfix/main.cf**, che **aumenta il livello di debug** solo per quelle specifiche connessioni:
 +
 +<file>
 +debug_peer_list = 192.168.10.12 10.0.0.13 [2a01:4f8:a017:6779::1]
 +debug_peer_level = 2
 +</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.
 +
  
 ====== Postgrey ====== ====== Postgrey ======
Line 849: Line 997:
  
 Le opzioni si configurano in **''/etc/default/postgrey''**. Eventuali indirizzi whitelist si aggiungono in **''/etc/postgrey/whitelist_clients''** e **''etc/postgrey/whitelist_recipients''**. Le opzioni si configurano in **''/etc/default/postgrey''**. Eventuali indirizzi whitelist si aggiungono in **''/etc/postgrey/whitelist_clients''** e **''etc/postgrey/whitelist_recipients''**.
 +
 +Un messaggio rifiutato temporaneamente genera questa riga in **/var/log/maio.log**:
 +
 +<code>
 +postgrey[760]: action=greylist, reason=new,
 +    client_name=server.example.org, client_address=123.123.123.123/32,
 +    sender=niccolo@domain.tld, recipient=user@example.org
 +</code>
 +
 +Quando invece il messaggio viene accettato questo è il log:
 +
 +<code>
 +postgrey[760]: action=pass, reason=triplet found,
 +    client_name=server.example.org, client_address=123.123.123.123/32,
 +    sender=niccolo@domain.tld, recipient=user@example.org
 +</code>
 +
 +Con il tool **postgreyreport** è possibile interrogare il database di postgrey (in **/var/lib/postgrey/postgrey.db**) in relazione al **mail.log**
 +
 +<code>
 +cat /var/log/mail.log | postgreyreport --show_tries
 +</code>
doc/appunti/linux/sa/postfix.1566568080.txt.gz · Last modified: 2019/08/23 15:48 by niccolo