Messagerie
Créer un utilisateur virtuel représentant tous les comptes de messagerie :
useradd virtual
id -g virtual
Noter l’identifiant du groupe créé (1001 bien souvent).
SASL
Ajout de la couche de sécurisation des authentifications :
aptitude install -y libsasl2-2 libsasl2-modules sasl2-bin
sed -i 's/START=no/START=yes/' /etc/default/saslauthd
Postfix
Installer Postfix et Greylisting :
aptitude install -y postfix postfix-pcre postfix-doc mailx mailutils postgrey
Remplacer le nom du serveur à la seconde option
Internet Site mail.serveur-prod.example.com
dpkg-reconfigure postfix
Entrée (9-10 fois de suite).
Noter le port utilisé par Greylisting (10023) :
netstat -anp | grep postgrey
Débuter la configuration de Postfix avec les utilisateurs statiques virtuels :
postconf 'message_size_limit = 20480000'
postconf 'local_transport = virtual'
postconf 'local_recipient_maps = $virtual_mailbox_maps'
postconf 'virtual_mailbox_base = /home/mail'
postconf 'virtual_mailbox_domains = /etc/postfix/vdomains'
postconf 'virtual_mailbox_maps = hash:/etc/postfix/vmaps'
postconf 'virtual_alias_maps = hash:/etc/postfix/valias'
postconf 'transport_maps = hash:/etc/postfix/transport'
postconf 'virtual_minimum_uid = 100'
postconf 'virtual_uid_maps = static:1001'
postconf 'virtual_gid_maps = static:1001'
postconf 'sender_dependent_default_transport_maps = hash:/etc/postfix/sender_transport'
Préparer la liste des adresses et alias :
touch /etc/postfix/vdomains /etc/postfix/vmaps /etc/postfix/valias /etc/postfix/transport /etc/postfix/sender_transport
postmap /etc/postfix/vmaps
postmap /etc/postfix/valias
postmap /etc/postfix/transport
postmap /etc/postfix/sender_transport
Ajouter la prise en charge des clefs nécessaires à TLS :
ln -s /etc/ssl/certs/ssl-cert-snakeoil.pem /etc/ssl/certs/postfix.pem
ln -s /etc/ssl/private/ssl-cert-snakeoil.key /etc/ssl/private/postfix.key
postconf 'smtpd_tls_cert_file=/etc/ssl/certs/postfix.pem'
postconf 'smtpd_tls_key_file=/etc/ssl/private/postfix.key'
Authentification SASL/Dovecot et listes noires contre le spam :
postconf 'smtpd_sasl_auth_enable = yes'
postconf 'smtpd_sasl_local_domain = mail.'$SERVER_DOMAIN
postconf 'smtpd_sasl_type = dovecot'
postconf 'smtpd_sasl_path = private/auth'
postconf 'smtpd_sasl_security_options = noanonymous'
postconf 'smtpd_recipient_restrictions = __temp__'
sed -i 's/__temp__/\
permit_mynetworks,\
permit_sasl_authenticated,\
check_sender_access hash:\/etc\/postfix\/sender_access,\
reject_unauth_destination,\
reject_rbl_client zen.spamhaus.org,\
reject_rbl_client bl.spamcop.net,\
reject_rhsbl_client dbl.spamhaus.org,\
check_policy_service inet:127.0.0.1:10023,/' /etc/postfix/main.cf
Liste des expéditeurs refusés
echo 'super_offres_commerciales@example.com' > /etc/postfix/sender_access REJECT
postmap /etc/postfix/sender_access
Masquage de l’adresse IP expéditrice
Il est possible que les filtres antispam refusent un e-mail envoyé à partir d’un terminal utilisant une connexion partagée : adresse IP renouvelée, réseau mobile. Il devient donc utile de transformer l’adresse réseau réelle par celle du serveur.
echo '/^\s*(Received: from)[^\n]*(.*)/ REPLACE $1 [127.0.0.1] (localhost [127.0.0.1])$2' > /etc/postfix/smtp_header_checks
nano /etc/postfix/master.cf
Décommenter les cinq lignes suivantes et ajouter la sixième :
submission inet n - - - - smtpd -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING -o cleanup_service_name=subcleanup
Puis ajouter le service à la fin du fichier :
subcleanup unix n - - - 0 cleanup -o header_checks=pcre:/etc/postfix/smtp_header_checks
E-mail du compte root
Les messages envoyés par le serveur au compte root sont dirigés vers une adresse e-mail :
echo root: $EXTERNAL_EMAIL >> /etc/aliases
newaliases
Répondeur e-mail
Dans la configuration des services Postfix, insérer la prise en charge du service autoreply, en dernière ligne du fichier :
nano /etc/postfix/master.cf
autoreply unix - n n - - pipe flags= user=virtual:virtual argv=/usr/local/bin/autoreply ${sender} ${user} ${extension}
Préparer le script gérant le répondeur autoreply :
echo '#!/bin/bash
mail -s"Message d'\''absence / Autoreply - $2@$3" -a"From: <postmaster@$3>" $1 < /home/mail/$3/user/$2/mail/autoreply.txt' > /usr/local/bin/autoreply
chown virtual:virtual /usr/local/bin/autoreply
chmod 700 /usr/local/bin/autoreply
L’expéditeur de la réponse automatique ne doit pas être le destinataire du message afin d’éviter la création d’une boucle infinie entre deux répondeurs. Bien sûr l’adresse postmaster@ doit exister sans pour autant disposer elle-même d’un répondeur.
Intégration de DKIM
aptitude install -y opendkim opendkim-tools
Ajout à Postfix :
nano /etc/postfix/main.cf
milter_default_action = accept milter_protocol = 2 smtpd_milters = inet:localhost:8891, unix:/spamass/spamass.sock non_smtpd_milters = inet:localhost:8891
Configuration :
mkdir -p /etc/opendkim/keys
chmod 0700 -R /etc/opendkim
chown opendkim:opendkim -R /etc/opendkim
echo '
SOCKET="inet:8891@localhost"' >> /etc/default/opendkim
echo '
AutoRestart yes
Background yes
Canonicalization relaxed/relaxed
DNSTimeout 5
Mode sv
SignatureAlgorithm rsa-sha256
SubDomains no
KeyTable /etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts' >> /etc/opendkim.conf
echo '127.0.0.1
localhost' >> /etc/opendkim/TrustedHosts
service postfix reload
service postgrey restart
Dovecot
Serveur IMAP et POP.
aptitude install -y dovecot-common dovecot-imapd dovecot-pop3d
Remplacer la configuration par défaut :
echo 'protocols = imap pop3
mail_location = maildir:/home/mail/%d/user/%n/mail/
disable_plaintext_auth = no
pop3_uidl_format = %08Xu%08Xv
log_path = /var/log/dovecot.log
auth_mechanisms = plain login cram-md5
ssl = yes
ssl_cert = </etc/ssl/certs/dovecot.pem
ssl_key = </etc/ssl/private/dovecot.key
userdb {
driver = passwd-file
args = /etc/virtual/passwd
}
passdb {
driver = passwd-file
args = /etc/virtual/shadow
}
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}' > /etc/dovecot/dovecot.conf
Utiliser les certificats SSL, préparer l’emplacement où lister les utilisateurs virtuels et ajouter la rotation des journaux :
ln -s /etc/ssl/certs/ssl-cert-snakeoil.pem /etc/ssl/certs/dovecot.pem
ln -s /etc/ssl/private/ssl-cert-snakeoil.key /etc/ssl/private/dovecot.key
mkdir /etc/virtual/
touch /etc/virtual/passwd
touch /etc/virtual/shadow
echo '/var/log/dovecot*.log {
weekly
compress
missingok
notifempty
delaycompress
postrotate
service dovecot reload > /dev/null
endscript
}' > /etc/logrotate.d/dovecot
service dovecot restart