Configurazione di Postfix con autenticazione Sasl su Debian

From RVM Wiki
Jump to navigation Jump to search

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:
# 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"
  • 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.

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 installare prima Maildrop e Courier-IMAP per poter usere il comando maildirmake

A installazione completa dei due nuovi pacchetti:

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=\$myhostname
  • 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
  • Abilitare l'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.
  • Abilitare l'antirelay e l'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
myhostname=gateway.fqdn
---

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
  • Testare l'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