Postfix utilizza due principali file di configurazione: main.cf e master.cf. Entranbi necessitano della vostra attenzione.
Dovete cambiare soltanto una linea:
vecchia:
flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user} |
nuova:
flags= user=cyrus argv=/usr/cyrus/bin/deliver -r ${sender} -m ${extension} ${user} |
Cosa cambia?
Uno sguardo a man deliver chiarirà la modifica:
L'installazione di Postfix di default utilizza una percorso sbagliato per il trasporto di cyrus, questa è la prima modifica. Il parametro »-r« inserisce un corretto percorso di ritorno. Senza questo, le mail rifiutate o cancellate da sieve saranno inviate all'utente cyrus al vostro dominio.
Qui potete cambiare parecchie cose come l'hostname, la redirezione, gli alias-lookups ecc.
Modifica dell'hostname:
myhostname = foo.bar.org |
mydestination
Qui dovete inserire tutti i nomi dominio locali(corrispondenti al file di sendmail /etc/mail/sendmail.cw). Se avete più domini, separateli con una virgola.
mydestination = foo.bar.org, example.com, furchbar-grausam.ch, whatever.domain.tld, mysql:/etc/postfix/mysql-mydestination.cf |
Relayhost
Qui definite dove inviare la posta in uscita. Se non fornitenessun host, la posta viene inviata direttamente all'host smtp di destinazione. Normalmente i vostri relayhosts sono i servers smtp dei vostri provider internet.
relayhost = relay01.foobar.net relay02.foobar.net relay03.foobar.net |
Mailtransport
Qui definite come deve essere gestita la posta per il trasporto locale. Nel vostro caso, dovrebbe essere smistata dal programma di trasporto cyrus.
mailbox_transport = cyrus |
Alla fine del file dovete aggiungere:
virtual_alias_maps = hash:/etc/postfix/virtual, mysql:/etc/postfix/mysql-virtual.cf |
Se non volete sovrascrivere /etc/postfix/virtual, saltate la voce relativa all'hash
Indirizzi in uscita dovrebbero essere riscritti da test0002 at dominio a nome.utente at virtualhost.com. Questo è importante se volete utilizzare un interfaccia web.
sender_canonical_maps = mysql:/etc/postfix/mysql-canonical.cf |
Ora dovete creare il file/etc/postfix/mysql-virtual.cf:
# # mysql config file for alias lookups on postfix # comments are ok. # # the user name and password to log into the mysql server hosts = localhost user = mail password = secret # the database name on the servers dbname = mail # the table name table = virtual # select_field = dest where_field = alias additional_conditions = and status = '1' |
The file /etc/postfix/mysql-canonical.cf:
# mysql config file for canonical lookups on postfix # comments are ok. # # the user name and password to log into the mysql server hosts = localhost user = mail password = secret # the database name on the servers dbname = mail # the table name table = virtual # select_field = alias where_field = username # Return the first match only additional_conditions = and status = '1' limit 1 |
Infine il file/etc/postfix/mysql-mydestination.cf:
# mysql config file for local domain (like sendmail's sendmail.cw) lookups on postfix # comments are ok. # # the user name and password to log into the mysql server hosts = localhost user = mail password = secret # the database name on the servers dbname = mail # the table name table = domain # select_field = domain_name where_field = domain_name |
Autenticazione SMTP con SASL e PAM
Inserite le seguenti linee nel file /etc/postfix/main.cf
smtpd_sasl_auth_enable = yes smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = broken_sasl_auth_clients = yes |
Inoltre dovete creare il file /usr/local/lib/sasl2/smtpd.conf con i seguenti contenuti:
pwcheck_method: saslauthd |
Il prossimo step è quello di dire a postfix come trovare il socket saslauthd:
mv /var/run/sasl2 /var/run/sasl2-old ln -s /var/run/saslauthd /var/run/sasl2 |
Questa sezione descrive come implementare una protezione di base contro lo SPAM con postfix. Non fa uso di software esterno come spamassasin o altri.
Postfix ha dei filtri predefiniti che permette di arrestare ovvi tentetivi di SPAM. In particolare questi sono:
smtpd_helo_required = yes
Questa impostazione in main.cf significa che i clients SMTP, quando si connettono, devono dare un comando »helo«.
smtpd_recipient_restrictions
Questa opzione main.cf vi permette di definire diverse regole per gestire l'accettazione delle mail. Il seguente esempio rifiuta tutti i dati di mittenti e destinatari non validi. In più definisce come ricercare spammers conosciuti da blacklists online.
smtpd_recipient_restrictions = reject_invalid_hostname, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unauth_pipelining, permit_mynetworks, reject_unauth_destination, reject_rbl_client zombie.dnsbl.sorbs.net, reject_rbl_client relays.ordb.org, reject_rbl_client opm.blitzed.org, reject_rbl_client list.dsbl.org, reject_rbl_client sbl.spamhaus.org, reject_rbl_client blackholes.easynet.nl, permit |
mime_header_checks=pcre:/etc/postfix/body_checks
Il controllo delle intestazioni MIME vi permette di rifiutare mail che contengono contenuto MIME cattivo, ad es. allegati pericolosi con eseguibili WIndows. Create il file /etc/postfix/body_checks. Il seguente esempio rifiuta tutte le mail che contengono allegati potenzialmente pericolosi. Nella mia esperienza. l'utilizzo di questo esempio tiene fuori la maggiorparte dei virus spediti via mail. In ogni caso, uno sistema antivirus dovrebbe sempre essere installato.
/^((Content-(Disposition: attachment;|Type:).*|\ +)| *)(file)?name\ *=\ *"?.*\.(lnk|asd|hlp|ocx|reg|bat|c[ho]m|cmd|exe|dll|vxd|pif|scr|hta|jse?|sh[mbs]|vb[esx]|ws[fh]|wmf)"?\ *$/ REJECT attachment type not allowed |