Configurazione di Postfix con autenticazione Sasl su Debian: Difference between revisions
m Reverted edits by Gabriele.vivinetto (Talk); changed back to last version by 10.0.254.1 |
|||
| Line 1: | Line 1: | ||
==Installazione | == Installazione postfix == | ||
* Innanzitutto definire le varialibili: | |||
<pre> | |||
export POST_HOSTNAME=fire.mendrisio.croalliance.com | |||
export POST_DOMAIN=croalliance.com | |||
</pre> | |||
* Poi procedere all'installazione: | |||
<pre> | |||
apt-get install --purge postfix-tls postfix | |||
</pre> | |||
NB: Scegliere NO CONFIGURATION | |||
* Fermare immediatamente postfix: | |||
* | |||
<pre> | |||
/etc/init.d/postfix stop | |||
</pre> | |||
== Installazione SASL per autenticazione SMTP == | |||
* Installazione: | |||
<pre> | |||
apt-get install libsasl2-modules sasl2-bin | |||
</pre> | |||
* Togliere il commento da "START=YES" ed aggiungere la righe con PARAMS e PWDIR in /etc/defaults/saslauthd: | |||
* | |||
<pre> | |||
cat > /etc/default/saslauthd <<EOFile | |||
# This needs to be uncommented before saslauthd will be run automatically | |||
START=yes | |||
* Creare il | # You must specify the authentication mechanisms you wish to use. | ||
# This defaults to "pam" for PAM support, but may also include | |||
# "shadow" or "sasldb", like this: | |||
# MECHANISMS="pam shadow" | |||
MECHANISMS="pam" | |||
PWDIR="/var/spool/postfix/var/run/saslauthd" | |||
PARAMS="-m /var/spool/postfix/var/run/saslauthd" | |||
EOFile | |||
</pre> | |||
* Creare la cartella per il chroot di postfix e settarne i diritti in dpkg-statoverride: | |||
<pre> | <pre> | ||
cat | mkdir -p /var/spool/postfix/var/run/saslauthd | ||
dpkg-statoverride --add root sasl 710 /var/spool/postfix/var/run/saslauthd | |||
</pre> | |||
* Creare il file di configurazione per postfix: | |||
<pre> | |||
cat > /etc/postfix/sasl/smtpd.conf <<EOFile | |||
pwcheck_method: saslauthd | pwcheck_method: saslauthd | ||
mech_list: PLAIN LOGIN | mech_list: PLAIN LOGIN | ||
EOFile | EOFile | ||
</pre> | |||
* Avviare saslauthd: | |||
<pre> | |||
/etc/init.d/saslauthd start | |||
</pre> | </pre> | ||
Si viene informati del fixing dei permessi: | |||
<pre> | |||
Starting SASL Authentication Daemon: changed ownership of `/var/spool/postfix/var/run/saslauthd' to root:sasl | |||
mode of `/var/spool/postfix/var/run/saslauthd' changed to 0710 (rwx--x---) | |||
saslauthd. | |||
</pre> | |||
* Verificare che funzioni: | |||
<pre> | |||
ps waux | grep saslauthd | |||
</pre> | |||
Il risultato deve essere simile a: | |||
<pre> | |||
root 3018 0.0 0.7 6500 1536 ? Ss 21:24 0:00 /usr/sbin/saslauthd -a pam | |||
..... | |||
</pre> | |||
* | * lanciare rcconf ed assicurarsi che saslauthd parta all'avvio: | ||
rcconf | |||
'''ATTENZIONE: ricordarsi di aggiungere postfix al gruppo sasl prima di testare il tutto !!!! (Vedi di seguito)''' | |||
== Configurazione postfix == | |||
* | * Copiare il file di partenza: | ||
<pre> | |||
cp /usr/share/postfix/main.cf.debian /etc/postfix/main.cf | |||
</pre> | |||
* Abilitare il delivery locale in formato Maildir e creare la cartella Maildir in /etc/skel. | |||
'''NB: maildirmake fa parte dei pacchetti Maildrop e Courier-IMAP. Non fa parte di Postfix. | |||
Quindi occorre installare prima il pacchetto courier-base per poter usere il comando maildirmake''' | |||
<pre> | |||
apt-get install courier-base | |||
postconf -e home_mailbox=Maildir/ | |||
maildirmake /etc/skel/Maildir | |||
</pre> | |||
* | * Settare il nome che apparirà nel greeting e che possibilmente corrisponderà al cname del record mx del mailserver e il nome presentato negli header: | ||
== | <pre> | ||
postconf -e myhostname=$POST_HOSTNAME | |||
postconf -e myorigin=$POST_DOMAIN | |||
</pre> | |||
* | * In caso il server sia dietro una NAT box, occorre specificare l'ip pubblico a.b.c.d.della nat box, soprattutto se il server è anche mx secondario per un dominio, al fine di evitare loop: | ||
<pre> | |||
postconf -e proxy_interfaces=a.b.c.d | |||
</pre> | |||
* Abilitare il supporto della alias map 'a la sendmail': | |||
<pre> | |||
postconf -e alias_maps=hash:/etc/aliases | |||
postconf -e alias_database=hash:/etc/aliases | |||
</pre> | |||
* Settare in /etc/aliases l'eventuale alias locale per root, e poi compilare la tabella: | |||
<pre> | |||
newaliases | |||
</pre> | |||
* Impostare le reti di fiducia (che potranno fare relay senza autenticazione); Nel caso ci siano dei mail server interni che usano il mail server senza autenticazione, aggiungerli come a.b.c.d/32. Normalmente aggiungere solo localnet, da usare con l'antivirus: | |||
<pre> | |||
postconf -e mynetworks=127.0.0.0/8 | |||
</pre> | |||
* Definire i domini per cui il mail server è la destinazione finale: | |||
= | <pre> | ||
postconf -e mydestination=$POST_DOMAIN,$POST_HOSTNAME,$(hostname -f),$(hostname),localhost | |||
</pre> | |||
=== Abilitazione dell'autenticazione obbligatoria per i client smtp basata su sasl 2=== | |||
<pre> | |||
postconf -e smtpd_recipient_restrictions=permit_sasl_authenticated,check_relay_domains | |||
postconf -e smtpd_sasl_security_options=noanonymous | |||
postconf -e smtpd_sasl_auth_enable=yes | |||
postconf -e smtpd_sasl_security_options=noanonymous | |||
postconf -e smtpd_sasl_application_name=smtpd | |||
postconf -e smtpd_sasl_local_domain='' | |||
postconf -e broken_sasl_auth_clients=yes | |||
</pre> | |||
* Aggiungere l'utente postfix al gruppo sasl: | |||
* | <pre> | ||
usermod -G sasl postfix | |||
</pre> | |||
* Riavviare postfix: | |||
<pre> | |||
/etc/init.d/postfix stop;/etc/init.d/postfix start | |||
</pre> | |||
* Per testare l'SMTP-AUTH, assicurarsi di aver installato libmime-per: | * Per testare l'SMTP-AUTH, assicurarsi di aver installato libmime-per: | ||
<pre> | |||
apt-get install libmime-perl | |||
</pre> | |||
* Creare un utente locale di prova: | |||
adduser nome.cognome | |||
* Generare la stringa di autenticazione, sostituendo username e password coi valori di un account valido: | * Generare la stringa di autenticazione, sostituendo username e password coi valori di un account valido: | ||
| Line 165: | Line 205: | ||
<pre> | <pre> | ||
# telnet localhost 25 | # telnet localhost 25 Trying 127.0.0.1... | ||
Trying 127.0.0.1... | |||
Connected to localhost.localdomain. | Connected to localhost.localdomain. | ||
Escape character is '^]'. | Escape character is '^]'. | ||
| Line 186: | Line 225: | ||
</pre> | </pre> | ||
Se sio verificasse un errore in ''' /var/log/mail.log''' tipo: | |||
=== Test invio | 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> | |||
... | |||
# ========================================================================== | |||
# service type private unpriv chroot wakeup maxproc command + args | |||
# (yes) (yes) (yes) (never) (100) | |||
# ========================================================================== | |||
smtp inet n - y - - smtpd | |||
... | |||
</pre> | |||
=== Abilitazione dell' ANTIRELAY ed RBL === | |||
o manualmente tramite "vi" | |||
<pre> | |||
--- /etc/postfix/main.cf | |||
# Relay control: | |||
# Allow all mail from localhost, autenticated sessions | |||
smtpd_recipient_restrictions = permit_mynetworks | |||
permit_sasl_authenticated | |||
reject_rbl_client relays.ordb.org | |||
reject_rbl_client dnsbl.njabl.org | |||
reject_rbl_client sbl.spamhaus.org | |||
reject_rbl_client cbl.abuseat.org | |||
reject_unauth_destination | |||
--- | |||
</pre> | |||
o con il comando: | |||
<pre> | |||
postconf -e smtpd_recipient_restrictions=permit_mynetworks,\ permit_sasl_authenticated,\ reject_rbl_client\ relays.ordb.org,\ reject_rbl_client\ nsbl.njabl.org,\ reject_rbl_client\ sbl.spamhaus.org\ reject_rbl_client\ cbl.abuseat.org,\ reject_unauth_destination | |||
</pre> | |||
Si possono aggiungere anche: | |||
- reject_rbl_client proxies.relays.monkeys.com | |||
- reject_rbl_client opm.blitzed.org | |||
- reject_rbl_client blackholes.wirehub.net | |||
- reject_rbl_client list.dsbl.org | |||
* Abilitare il RELAY solo per posta To: dominio.com | |||
o manualmente tramite "vi" | |||
<pre> | |||
--- /etc/postfix/main.cf | |||
relay_domains = dominio.com | |||
--- | |||
</pre> | |||
o con il comando: | |||
<pre> | |||
postconf -e relay_domains=$POST_DOMAIN | |||
</pre> | |||
=== Test invio della posta === | |||
A. Da dominio a dominio | A. Da dominio a dominio | ||
| Line 198: | Line 302: | ||
helo vittorio | helo vittorio | ||
... | ... | ||
mail from: | mail from: mittente@dominio.dom | ||
... | ... | ||
rcpt to: | rcpt to: destinatario@dominio.dom | ||
.... | .... | ||
data | data | ||
| Line 249: | Line 353: | ||
# | # | ||
</pre> | </pre> | ||
== Configurazione account locali e remoti == | == Configurazione account locali e remoti == | ||
* Definire la mappa: | * Definire la mappa: | ||
| Line 305: | Line 386: | ||
== Configurare Postfix per Amavis == | == Configurare Postfix per Amavis == | ||
* | * Innanzitutto configurare Amavis: | ||
http://rvmserver/mediawiki/index.php?title=Installazione_Amavis | |||
== | * Poi eseguire: | ||
* | |||
<pre> | |||
postconf -e content_filter=amavis:[127.0.0.1]:10024 | |||
</pre> | |||
* Mettere queste cose alla fine di master.cf: | |||
<pre> | |||
cat >> /etc/postfix/master.cf <<EOFile | |||
amavis unix - - n - 2 smtp | |||
-o smtp_data_done_timeout=1200 | |||
-o disable_dns_lookups=yes | |||
127.0.0.1:10025 inet n - n - - smtpd | |||
-o content_filter= | |||
-o local_recipient_maps= | |||
-o relay_recipient_maps= | |||
-o smtpd_restriction_classes= | |||
-o smtpd_client_restrictions= | |||
-o smtpd_helo_restrictions= | |||
-o smtpd_sender_restrictions= | |||
-o smtpd_recipient_restrictions=permit_mynetworks,reject | |||
-o mynetworks=127.0.0.0/8 | |||
-o strict_rfc821_envelopes=yes | |||
EOFile | |||
</pre> | |||
ed il cui risultato sarà: | |||
<pre> | |||
amavis unix - - n - 2 smtp | |||
-o smtp_data_done_timeout=1200 | |||
-o disable_dns_lookups=yes | |||
127.0.0.1:10025 inet n - n - - smtpd | |||
-o content_filter= | |||
-o local_recipient_maps= | |||
-o relay_recipient_maps= | |||
-o smtpd_restriction_classes= | |||
-o smtpd_client_restrictions= | |||
-o smtpd_helo_restrictions= | |||
-o smtpd_sender_restrictions= | |||
-o smtpd_recipient_restrictions=permit_mynetworks,reject | |||
-o mynetworks=127.0.0.0/8 | |||
-o strict_rfc821_envelopes=yes | |||
</pre> | |||
* Restartare Postfix e Clamav e Clamav-daemon: | |||
<pre> | |||
/etc/init.d/postfix stop; /etc/init.d/postfix start | |||
/etc/init.d/amavis stop ;/etc/init.d/amavis start | |||
/etc/init.d/clamav-daemon stop; /etc/init.d/clamav-daemon start | |||
</pre> | |||
* Verificare la configurazione: | |||
<pre> | |||
postfix check | |||
</pre> | |||
Se non si lamenta dovrebbe andare. Se ci sono problemi, restartare tutti i demoni. | |||
'''Ricordarsi infine di settare l'avvio automatico dei servizi:''' | |||
<pre> | |||
rcconf | |||
</pre> | |||
Revision as of 16:57, 9 November 2010
Installazione postfix
- Innanzitutto definire le varialibili:
export POST_HOSTNAME=fire.mendrisio.croalliance.com export POST_DOMAIN=croalliance.com
- Poi procedere all'installazione:
apt-get install --purge postfix-tls postfix
NB: Scegliere NO CONFIGURATION
- Fermare immediatamente postfix:
/etc/init.d/postfix stop
Installazione SASL per autenticazione SMTP
- Installazione:
apt-get install libsasl2-modules sasl2-bin
- Togliere il commento da "START=YES" ed aggiungere la righe con PARAMS e PWDIR in /etc/defaults/saslauthd:
cat > /etc/default/saslauthd <<EOFile # This needs to be uncommented before saslauthd will be run automatically START=yes # You must specify the authentication mechanisms you wish to use. # This defaults to "pam" for PAM support, but may also include # "shadow" or "sasldb", like this: # MECHANISMS="pam shadow" MECHANISMS="pam" PWDIR="/var/spool/postfix/var/run/saslauthd" PARAMS="-m /var/spool/postfix/var/run/saslauthd" EOFile
- Creare la cartella per il chroot di postfix e settarne i diritti in dpkg-statoverride:
mkdir -p /var/spool/postfix/var/run/saslauthd dpkg-statoverride --add root sasl 710 /var/spool/postfix/var/run/saslauthd
- Creare il file di configurazione per postfix:
cat > /etc/postfix/sasl/smtpd.conf <<EOFile pwcheck_method: saslauthd mech_list: PLAIN LOGIN EOFile
- Avviare saslauthd:
/etc/init.d/saslauthd start
Si viene informati del fixing dei permessi:
Starting SASL Authentication Daemon: changed ownership of `/var/spool/postfix/var/run/saslauthd' to root:sasl mode of `/var/spool/postfix/var/run/saslauthd' changed to 0710 (rwx--x---) saslauthd.
- Verificare che funzioni:
ps waux | grep saslauthd
Il risultato deve essere simile a:
root 3018 0.0 0.7 6500 1536 ? Ss 21:24 0:00 /usr/sbin/saslauthd -a pam .....
- lanciare rcconf ed assicurarsi che saslauthd parta all'avvio:
rcconf
ATTENZIONE: ricordarsi di aggiungere postfix al gruppo sasl prima di testare il tutto !!!! (Vedi di seguito)
Configurazione postfix
- Copiare il file di partenza:
cp /usr/share/postfix/main.cf.debian /etc/postfix/main.cf
- Abilitare il delivery locale in formato Maildir e creare la cartella Maildir in /etc/skel.
NB: maildirmake fa parte dei pacchetti Maildrop e Courier-IMAP. Non fa parte di Postfix.
Quindi occorre installare prima il pacchetto courier-base per poter usere il comando maildirmake
apt-get install courier-base postconf -e home_mailbox=Maildir/ maildirmake /etc/skel/Maildir
- Settare il nome che apparirà nel greeting e che possibilmente corrisponderà al cname del record mx del mailserver e il nome presentato negli header:
postconf -e myhostname=$POST_HOSTNAME postconf -e myorigin=$POST_DOMAIN
- In caso il server sia dietro una NAT box, occorre specificare l'ip pubblico a.b.c.d.della nat box, soprattutto se il server è anche mx secondario per un dominio, al fine di evitare loop:
postconf -e proxy_interfaces=a.b.c.d
- Abilitare il supporto della alias map 'a la sendmail':
postconf -e alias_maps=hash:/etc/aliases postconf -e alias_database=hash:/etc/aliases
- Settare in /etc/aliases l'eventuale alias locale per root, e poi compilare la tabella:
newaliases
- Impostare le reti di fiducia (che potranno fare relay senza autenticazione); Nel caso ci siano dei mail server interni che usano il mail server senza autenticazione, aggiungerli come a.b.c.d/32. Normalmente aggiungere solo localnet, da usare con l'antivirus:
postconf -e mynetworks=127.0.0.0/8
- Definire i domini per cui il mail server è la destinazione finale:
postconf -e mydestination=$POST_DOMAIN,$POST_HOSTNAME,$(hostname -f),$(hostname),localhost
Abilitazione dell'autenticazione obbligatoria per i client smtp basata su sasl 2
postconf -e smtpd_recipient_restrictions=permit_sasl_authenticated,check_relay_domains postconf -e smtpd_sasl_security_options=noanonymous postconf -e smtpd_sasl_auth_enable=yes postconf -e smtpd_sasl_security_options=noanonymous postconf -e smtpd_sasl_application_name=smtpd postconf -e smtpd_sasl_local_domain='' postconf -e broken_sasl_auth_clients=yes
- Aggiungere l'utente postfix al gruppo sasl:
usermod -G sasl postfix
- Riavviare postfix:
/etc/init.d/postfix stop;/etc/init.d/postfix start
- Per testare l'SMTP-AUTH, assicurarsi di aver installato libmime-per:
apt-get install libmime-perl
- Creare un utente locale di prova:
adduser nome.cognome
- 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.
Se sio 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 - y - - smtpd ...
Abilitazione dell' ANTIRELAY ed RBL
o manualmente tramite "vi"
--- /etc/postfix/main.cf # Relay control: # Allow all mail from localhost, autenticated sessions smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_rbl_client relays.ordb.org reject_rbl_client dnsbl.njabl.org reject_rbl_client sbl.spamhaus.org reject_rbl_client cbl.abuseat.org reject_unauth_destination ---
o con il comando:
postconf -e smtpd_recipient_restrictions=permit_mynetworks,\ permit_sasl_authenticated,\ reject_rbl_client\ relays.ordb.org,\ reject_rbl_client\ nsbl.njabl.org,\ reject_rbl_client\ sbl.spamhaus.org\ reject_rbl_client\ cbl.abuseat.org,\ reject_unauth_destination
Si possono aggiungere anche:
- reject_rbl_client proxies.relays.monkeys.com
- reject_rbl_client opm.blitzed.org
- reject_rbl_client blackholes.wirehub.net
- reject_rbl_client list.dsbl.org
- Abilitare il RELAY solo per posta To: dominio.com
o manualmente tramite "vi"
--- /etc/postfix/main.cf relay_domains = dominio.com ---
o con il comando:
postconf -e relay_domains=$POST_DOMAIN
Test invio della posta
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 #
Configurazione account locali e remoti
- 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
- Innanzitutto configurare Amavis:
http://rvmserver/mediawiki/index.php?title=Installazione_Amavis
- Poi eseguire:
postconf -e content_filter=amavis:[127.0.0.1]:10024
- Mettere queste cose alla fine di master.cf:
cat >> /etc/postfix/master.cf <<EOFile amavis unix - - n - 2 smtp -o smtp_data_done_timeout=1200 -o disable_dns_lookups=yes 127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks=127.0.0.0/8 -o strict_rfc821_envelopes=yes EOFile
ed il cui risultato sarà:
amavis unix - - n - 2 smtp -o smtp_data_done_timeout=1200 -o disable_dns_lookups=yes 127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks=127.0.0.0/8 -o strict_rfc821_envelopes=yes
- Restartare Postfix e Clamav e Clamav-daemon:
/etc/init.d/postfix stop; /etc/init.d/postfix start /etc/init.d/amavis stop ;/etc/init.d/amavis start /etc/init.d/clamav-daemon stop; /etc/init.d/clamav-daemon start
- Verificare la configurazione:
postfix check
Se non si lamenta dovrebbe andare. Se ci sono problemi, restartare tutti i demoni.
Ricordarsi infine di settare l'avvio automatico dei servizi:
rcconf