Configurazione di Postfix con autenticazione Sasl su Debian: Difference between revisions
No edit summary |
|||
| (45 intermediate revisions by 3 users not shown) | |||
| Line 1: | Line 1: | ||
== Installazione | ==Installazione Postfix== | ||
sudo apt-get install --purge postfix | |||
<pre> | <pre> | ||
Package configuration | |||
┌────┤ Postfix Configuration ├─────┐ | |||
│ General type of configuration? │ | |||
│ │ | |||
│ *No configuration │ | |||
│ Internet Site │ | |||
│ Internet with smarthost │ | |||
│ Satellite system │ | |||
│ Local only │ | |||
│ │ | |||
│ │ | |||
│ <Ok> <Cancel> │ | |||
│ │ | |||
└──────────────────────────────────┘ | |||
</pre> | </pre> | ||
* | == Debian Squeeze== | ||
===Installazione Sasl=== | |||
sudo apt-get install sasl2-bin libsasl2-modules | |||
===Configurazione Sasl=== | |||
* Abilitarne l'esecuzione, e configurarlo per Postfix: | |||
sudo sed -i 's@^START=no@START=yes@;s@^OPTIONS="-c -m /var/run/saslauthd"@OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"@' /etc/default/saslauthd | |||
echo "38d757b83e8fd554386a9aac6a236077 /etc/default/saslauthd" | md5sum --check | |||
O a mano: | |||
sudoedit /etc/default/saslauthd | |||
START=yes | |||
... | |||
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd" | |||
* Sistemare per Postfix: | |||
sudo dpkg-statoverride --add root sasl 710 /var/spool/postfix/var/run/saslauthd | |||
sudo adduser postfix sasl | |||
* Creare il file per smtpd: | |||
<pre> | <pre> | ||
cat | sudo tee /etc/postfix/sasl/smtpd.conf > /dev/null <<EOFile | |||
pwcheck_method: saslauthd | |||
mech_list: PLAIN LOGIN | |||
EOFile | |||
</pre> | </pre> | ||
* Avviare Sasl | |||
sudo invoke-rc.d saslauthd start | |||
* Impostarne l'esecuzione al boot: | |||
sudo update-rc.d -f saslauthd remove | |||
sudo update-rc.d saslauthd defaults | |||
===Configurazione Postfix=== | |||
* Copiare la configurazione base: | |||
sudo cp /etc/postfix/main.cf /etc/postfix/main.cf.dpkg-old | |||
sudo cp /usr/share/postfix/main.cf.debian /etc/postfix/main.cf | |||
* Impostare l'uso del formato Maildir: | |||
sudo postconf -e home_mailbox=Maildir/ | |||
* Se è installato courier | |||
sudo maildirmake /etc/skel/Maildir | |||
* Se è installato dovecot | |||
sudo maildirmake.dovecot /etc/skel/Maildir | |||
* Configurare il dominio | |||
export DOMAIN=domain.dom | |||
export PUBIP=1.2.3.4 | |||
sudo postconf -e myhostname=$DOMAIN | |||
sudo postconf -e myorigin=$DOMAIN | |||
sudo postconf -e mynetworks=127.0.0.0/8 | |||
sudo postconf -e mydestination=$DOMAIN,$(hostname -f),$(hostname),localhost,localhost.localdomain | |||
sudo postconf -e relay_domains=$DOMAIN | |||
sudo postconf -e proxy_interfaces=$PUBIP | |||
* | * Impostare gli alias di sistema: | ||
sudoedit /etc/aliases | |||
postmaster: root | |||
root: forward_address@domain.dom | |||
sudo newaliases | |||
* Impostare le configurazioni per Sasl | |||
sudo postconf -e smtpd_recipient_restrictions=permit_sasl_authenticated,check_relay_domains | |||
sudo postconf -e smtpd_sasl_security_options=noanonymous | |||
sudo postconf -e smtpd_sasl_auth_enable=yes | |||
sudo postconf -e smtpd_sasl_security_options=noanonymous | |||
sudo postconf -e smtpd_sasl_application_name=smtpd | |||
sudo postconf -e smtpd_sasl_local_domain='' | |||
sudo postconf -e broken_sasl_auth_clients=yes | |||
sudo invoke-rc.d postfix stop; sudo invoke-rc.d postfix start | |||
* Impostare le regole antispam | |||
sudo postconf -e "smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination,check_sender_access hash:/etc/postfix/whitelist,reject_rbl_client sbl.spamhaus.org,reject_rbl_client cbl.abuseat.org" | |||
* Impostare la whitelist per le regole antispam | |||
sudo touch /etc/postfix/whitelist | |||
cd /etc/postfix | |||
sudo postmap whitelist | |||
sudo invoke-rc.d postfix stop; sudo invoke-rc.d postfix start | |||
== Test autenticazione Sasl== | |||
* Creare un utente locale di prova: | |||
sudo adduser --force-badname --gecos "Utente di prova" nome.cognome | |||
=== Test con swaks=== | |||
* Da un client linux | |||
sudo apt-get install swaks | |||
* Questo deve andare: | |||
swaks -f nome.cognome@domain.dom -s smtpserver.domain.dom -t recipient@domain.dom -au nome.cognome | |||
* Questo non deve andare: | |||
swaks -f nome.cognome@rdomain.dom --s smtpserver.domain.dom -t recipient@domain.dom | |||
* Rimuovere l'account di prova: | |||
sudo userdel -r nome.cognome | |||
===Test con Telnet=== | |||
* Per testare l'SMTP-AUTH, assicurarsi di aver installato libmime-per: | |||
sudo apt-get install libmime-perl | |||
* Generare la stringa di autenticazione, sostituendo username e password coi valori di un account valido: | |||
<pre> | <pre> | ||
perl -MMIME::Base64 -e 'print encode_base64("nome.cognome\0nome.cognome\0password");' | |||
</pre> | </pre> | ||
Il cui risultato è una stringa similare a: | |||
= | '''dXNlcm5hbWUAdXNlcm5hbWUAcGFzc3dvcmQ=''' | ||
* | * Testare ora la corretta autenticazione uasndo la stringa generata: | ||
<pre> | <pre> | ||
# telnet localhost 25 | |||
Trying 127.0.0.1... | |||
Connected to localhost.localdomain. | |||
Escape character is '^]'. | |||
220 fire.all-logistics.com ESMTP Postfix (Debian/GNU) | |||
ehlo p | |||
250-fire.all-logistics.com | |||
250-PIPELINING | |||
250-SIZE 10240000 | |||
250-VRFY | |||
250-ETRN | |||
250-AUTH LOGIN PLAIN | |||
250-AUTH=LOGIN PLAIN | |||
250 8BITMIME | |||
auth plain dGVzdHVzZXIAdGVzdHVzZXIAbGFwYXNzYQ== | |||
235 Authentication successful | |||
quit | |||
221 Bye | |||
Connection closed by foreign host. | |||
</pre> | </pre> | ||
* | * Rimuovere l'account di prova: | ||
sudo userdel -r nome.cognome | |||
=== Test invio smtp della posta con telnet=== | |||
A. Da dominio a dominio | |||
<pre> | <pre> | ||
# | #telnet mailserver 25 | ||
... | |||
helo vittorio | |||
... | |||
mail from: <mittente@dominio.dom> | |||
... | |||
rcpt to: <destinatario@dominio.dom> | |||
.... | |||
data | |||
... | |||
subject: soggetto email | |||
testo messaggio | |||
testo messaggio | |||
# | testo messaggio | ||
. | |||
quit | |||
# | |||
</pre> | |||
B. Da esterno a dominio (usare account libero.it o simili) | |||
C. Da dominio a esterno (con autenticazione) | |||
<pre> | |||
#telnet mailserver 25 | |||
Connected to localhost.localdomain. | |||
Escape character is '^]'. | |||
220 fire.all-logistics.com ESMTP Postfix (Debian/GNU) | |||
ehlo miamacchina | |||
250-fire.all-logistics.com | |||
250-PIPELINING | |||
250-SIZE 10240000 | |||
250-VRFY | |||
250-ETRN | |||
250-AUTH LOGIN PLAIN | |||
250-AUTH=LOGIN PLAIN | |||
250 8BITMIME | |||
auth plain dGVzdHVzZXIAdGVzdHVzZXIAbGFwYXNzYQ== | |||
235 Authentication successful | |||
mail from: mittente@dominio.dom | |||
... | |||
rcpt to: destinatario@dominioesterno.dom | |||
.... | |||
data | |||
... | |||
subject: soggetto email | |||
testo messaggio | |||
testo messaggio | |||
testo messaggio | |||
. | |||
quit | |||
# | |||
</pre> | </pre> | ||
* | * Rimuovere l'account di prova: | ||
sudo userdel -r nome.cognome | |||
==Verifica in caso di errori Sasl== | |||
Se si verificasse un errore in ''' /var/log/mail.log''' tipo: | |||
Jan 4 11:01:20 fire postfix/smtpd[1511]: warning: SASL authentication failure: | |||
cannot connect to saslauthd server: No such file or directory | |||
Probabilmente c'è un errore ni parametri in ''/etc/default/saslauthd'' oppure non è attivo il chroot in ''/etc/postfix/master.cf'' in cui la seguente linea deve essere: | |||
<pre> | <pre> | ||
... | |||
# ========================================================================== | |||
# service type private unpriv chroot wakeup maxproc command + args | |||
# (yes) (yes) (yes) (never) (100) | |||
# ========================================================================== | |||
smtp inet n - - - - smtpd | |||
... | |||
</pre> | </pre> | ||
* | |||
== Configurazione account locali e remoti == | |||
Nel caso ci siano caselle da tenere in locale, ed altre da inoltrare ad un'altra macchina. | |||
* Definire la mappa: | |||
<pre> | <pre> | ||
postconf -e transport_maps=hash:/etc/postfix/transport | |||
</pre> | </pre> | ||
* | * Creare la mappa: | ||
<pre> | <pre> | ||
/etc/ | vi /etc/postfix/transport | ||
</pre> | </pre> | ||
<pre> | <pre> | ||
user1.local@domain.com local: | |||
user2.local@domain.com local: | |||
domain.com smtp:[ip-nome.gateway.destinazione] | |||
* smtp: | |||
</pre> | </pre> | ||
user1 e user2 vengono deliverati in locale, tutti gli altri utenti vengono inviati al mailserver ip-nome.gateway.destinazione, mentre tutti gli altri vengono inviati via MX ai relativi mailserver di destinazione. | |||
* Compilare la tabella con: | |||
<pre> | <pre> | ||
postmap /etc/postfix/transport < transport | |||
</pre> | </pre> | ||
== Configurare Postfix per Amavis == | |||
* Seguire | |||
[[Installazione Amavisd-new in Debian]] | |||
==Attivazione greylisting== | |||
NON ATTIVARE | |||
* Vedi [[Greylisting con postfix come tecnica antispam]] | |||
Latest revision as of 15:35, 19 November 2021
Installazione Postfix
sudo apt-get install --purge postfix
Package configuration
┌────┤ Postfix Configuration ├─────┐
│ General type of configuration? │
│ │
│ *No configuration │
│ Internet Site │
│ Internet with smarthost │
│ Satellite system │
│ Local only │
│ │
│ │
│ <Ok> <Cancel> │
│ │
└──────────────────────────────────┘
Debian Squeeze
Installazione Sasl
sudo apt-get install sasl2-bin libsasl2-modules
Configurazione Sasl
- Abilitarne l'esecuzione, e configurarlo per Postfix:
sudo sed -i 's@^START=no@START=yes@;s@^OPTIONS="-c -m /var/run/saslauthd"@OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"@' /etc/default/saslauthd
echo "38d757b83e8fd554386a9aac6a236077 /etc/default/saslauthd" | md5sum --check
O a mano:
sudoedit /etc/default/saslauthd
START=yes ... OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
- Sistemare per Postfix:
sudo dpkg-statoverride --add root sasl 710 /var/spool/postfix/var/run/saslauthd sudo adduser postfix sasl
- Creare il file per smtpd:
cat | sudo tee /etc/postfix/sasl/smtpd.conf > /dev/null <<EOFile pwcheck_method: saslauthd mech_list: PLAIN LOGIN EOFile
- Avviare Sasl
sudo invoke-rc.d saslauthd start
- Impostarne l'esecuzione al boot:
sudo update-rc.d -f saslauthd remove sudo update-rc.d saslauthd defaults
Configurazione Postfix
- Copiare la configurazione base:
sudo cp /etc/postfix/main.cf /etc/postfix/main.cf.dpkg-old sudo cp /usr/share/postfix/main.cf.debian /etc/postfix/main.cf
- Impostare l'uso del formato Maildir:
sudo postconf -e home_mailbox=Maildir/
- Se è installato courier
sudo maildirmake /etc/skel/Maildir
- Se è installato dovecot
sudo maildirmake.dovecot /etc/skel/Maildir
- Configurare il dominio
export DOMAIN=domain.dom export PUBIP=1.2.3.4
sudo postconf -e myhostname=$DOMAIN sudo postconf -e myorigin=$DOMAIN sudo postconf -e mynetworks=127.0.0.0/8 sudo postconf -e mydestination=$DOMAIN,$(hostname -f),$(hostname),localhost,localhost.localdomain sudo postconf -e relay_domains=$DOMAIN sudo postconf -e proxy_interfaces=$PUBIP
- Impostare gli alias di sistema:
sudoedit /etc/aliases
postmaster: root root: forward_address@domain.dom
sudo newaliases
- Impostare le configurazioni per Sasl
sudo postconf -e smtpd_recipient_restrictions=permit_sasl_authenticated,check_relay_domains sudo postconf -e smtpd_sasl_security_options=noanonymous sudo postconf -e smtpd_sasl_auth_enable=yes sudo postconf -e smtpd_sasl_security_options=noanonymous sudo postconf -e smtpd_sasl_application_name=smtpd sudo postconf -e smtpd_sasl_local_domain= sudo postconf -e broken_sasl_auth_clients=yes
sudo invoke-rc.d postfix stop; sudo invoke-rc.d postfix start
- Impostare le regole antispam
sudo postconf -e "smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination,check_sender_access hash:/etc/postfix/whitelist,reject_rbl_client sbl.spamhaus.org,reject_rbl_client cbl.abuseat.org"
- Impostare la whitelist per le regole antispam
sudo touch /etc/postfix/whitelist cd /etc/postfix sudo postmap whitelist sudo invoke-rc.d postfix stop; sudo invoke-rc.d postfix start
Test autenticazione Sasl
- Creare un utente locale di prova:
sudo adduser --force-badname --gecos "Utente di prova" nome.cognome
Test con swaks
- Da un client linux
sudo apt-get install swaks
- Questo deve andare:
swaks -f nome.cognome@domain.dom -s smtpserver.domain.dom -t recipient@domain.dom -au nome.cognome
- Questo non deve andare:
swaks -f nome.cognome@rdomain.dom --s smtpserver.domain.dom -t recipient@domain.dom
- Rimuovere l'account di prova:
sudo userdel -r nome.cognome
Test con Telnet
- Per testare l'SMTP-AUTH, assicurarsi di aver installato libmime-per:
sudo apt-get install libmime-perl
- Generare la stringa di autenticazione, sostituendo username e password coi valori di un account valido:
perl -MMIME::Base64 -e 'print encode_base64("nome.cognome\0nome.cognome\0password");'
Il cui risultato è una stringa similare a:
dXNlcm5hbWUAdXNlcm5hbWUAcGFzc3dvcmQ=
- Testare ora la corretta autenticazione uasndo la stringa generata:
# telnet localhost 25 Trying 127.0.0.1... Connected to localhost.localdomain. Escape character is '^]'. 220 fire.all-logistics.com ESMTP Postfix (Debian/GNU) ehlo p 250-fire.all-logistics.com 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-AUTH LOGIN PLAIN 250-AUTH=LOGIN PLAIN 250 8BITMIME auth plain dGVzdHVzZXIAdGVzdHVzZXIAbGFwYXNzYQ== 235 Authentication successful quit 221 Bye Connection closed by foreign host.
- Rimuovere l'account di prova:
sudo userdel -r nome.cognome
Test invio smtp della posta con telnet
A. Da dominio a dominio
#telnet mailserver 25 ... helo vittorio ... mail from: <mittente@dominio.dom> ... rcpt to: <destinatario@dominio.dom> .... data ... subject: soggetto email testo messaggio testo messaggio testo messaggio . quit #
B. Da esterno a dominio (usare account libero.it o simili)
C. Da dominio a esterno (con autenticazione)
#telnet mailserver 25 Connected to localhost.localdomain. Escape character is '^]'. 220 fire.all-logistics.com ESMTP Postfix (Debian/GNU) ehlo miamacchina 250-fire.all-logistics.com 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-AUTH LOGIN PLAIN 250-AUTH=LOGIN PLAIN 250 8BITMIME auth plain dGVzdHVzZXIAdGVzdHVzZXIAbGFwYXNzYQ== 235 Authentication successful mail from: mittente@dominio.dom ... rcpt to: destinatario@dominioesterno.dom .... data ... subject: soggetto email testo messaggio testo messaggio testo messaggio . quit #
- Rimuovere l'account di prova:
sudo userdel -r nome.cognome
Verifica in caso di errori Sasl
Se si verificasse un errore in /var/log/mail.log tipo:
Jan 4 11:01:20 fire postfix/smtpd[1511]: warning: SASL authentication failure: cannot connect to saslauthd server: No such file or directory
Probabilmente c'è un errore ni parametri in /etc/default/saslauthd oppure non è attivo il chroot in /etc/postfix/master.cf in cui la seguente linea deve essere:
... # ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) # ========================================================================== smtp inet n - - - - smtpd ...
Configurazione account locali e remoti
Nel caso ci siano caselle da tenere in locale, ed altre da inoltrare ad un'altra macchina.
- Definire la mappa:
postconf -e transport_maps=hash:/etc/postfix/transport
- Creare la mappa:
vi /etc/postfix/transport
user1.local@domain.com local: user2.local@domain.com local: domain.com smtp:[ip-nome.gateway.destinazione] * smtp:
user1 e user2 vengono deliverati in locale, tutti gli altri utenti vengono inviati al mailserver ip-nome.gateway.destinazione, mentre tutti gli altri vengono inviati via MX ai relativi mailserver di destinazione.
- Compilare la tabella con:
postmap /etc/postfix/transport < transport
Configurare Postfix per Amavis
- Seguire
Installazione Amavisd-new in Debian
Attivazione greylisting
NON ATTIVARE