Ceci est une ancienne révision du document !
Table des matières
< retour à la page de l'administration technique
Serveur email
Le serveur mail de FedeRez est Postfix. Le filtrage de spam est effectué par Postgrey, amavisd-new, SpamAssassin et ClamAV. Les emails sortants sont signés par OpenDKIM.
Ce serveur gère aussi les mailing-lists.
Installation
# aptitude install postfix postgrey # aptitude install amavisd-new clamav clamav-daemon clamav-freshclam # aptitude install spamassassin bzip2 libnet-ph-perl libnet-snpp-perl libnet-telnet-perl # aptitude install lha arj rar unrar unrar-free nomarch lzop cabextract razor pyzor p7zip-full pax zip unzip lha zoo
Postfix
# dpkg-reconfigure postfix System mail name : hexagon.federez.net root and postmaster mail recipient : admin@federez.net Other destinations to accept mail for : federez.net, hexagon.federez.net, etc. Force synchronous updates on mail queue : No Local networks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 Use procmail for local delivery : Yes Mailbox size limite : 0 Local address extension character: + Internet protocols to use: all
Postgrey
Dans /etc/default/postgrey
:
POSTGREY_OPTS="--inet=127.0.0.1:10023 --delay=65 --max-age=40 --retry-window=5h --auto-whitelist-clients=3" POSTGREY_TEXT="Unable to accept the message now. Please retry later."
Dans /etc/postfix/main.cf
:
# postgrey smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_policy_service inet:127.0.0.1:10023
La whitelist est dans /etc/postgrey/whitelist_clients
.
Tout relancer :
# kill $(ps aux | grep '/postgrey' | grep -v grep | awk '{print $2}') # /etc/init.d/postgrey restart # /etc/init.d/postfix restart
amavisd-new, SpamAssassin et ClamAV
Dans /etc/postfix/master.cf
, spécifier un service amavisfeed pour transmettre des messages à amavis et un service d'écoute sur le port 10025 pour récupérer les emails filtrés :
# amavisd-new amavisfeed unix - - n - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o smtp_tls_note_starttls_offer=no 127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions=reject_unauth_pipelining -o smtpd_end_of_data_restrictions= -o smtpd_restriction_classes= -o mynetworks=127.0.0.0/8 -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters -o local_header_rewrite_clients= -o smtpd_milters= -o local_recipient_maps= -o relay_recipient_maps=
Dans /etc/postfix/main.cf
, déclarer le service de filtrage :
# amavis content_filter=amavisfeed:[127.0.0.1]:10024 receive_override_options = no_address_mappings
Dans /etc/amavis/conf.d/15-content_filter_mode
, activer le filtrage de spam et de virus :
@bypass_virus_checks_maps = ( \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re); @bypass_spam_checks_maps = ( \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
Dans /etc/amavis/conf.d/05-domain_id
, spécifier les domaines à prendre en compte :
@local_domains_acl = ( ".federez.net", ".federez.org", ".federez.fr", ".federez.eu" );
Dans /etc/spamassassin/local.cf
, désactiver l'expiration par SpamAssassin de tokens Bayes :
bayes_auto_expire 0
Activer le lancement de SpamAssassin par le système en modifiant /etc/default/spamassassin
:
CRON=1
Enfin, initialiser SpamAssassin, ClamAV et amavisd-new, puis tout relancer :
# adduser clamav amavis # freshclam # su debian-spamd -c "sa-update --gpghomedir /var/lib/spamassassin/sa-update-keys" # /etc/init.d/amavis restart # /etc/init.d/clamav-freshclam restart # /etc/init.d/clamav-daemon restart # /etc/init.d/postfix restart
DKIM
Installer OpenDKIM et ses outils (pour la génération de clé) :
aptitude install opendkim opendkim-tools
Générer une clé pour hexagon :
opendkim-genkey -b 2048 -h sha256 -s hexagon
Le fichier généré hexagon.txt
contient l'enregistrement à ajouter à la zone DNS, qu'il faut adapter pour respecter la limite de longueur :
hexagon._domainkey TXT ("v=DKIM1; h=sha256; k=rsa;" "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA25gly" "4G4PlH/UEg80Qn1ie882v96u2OahP9bfzRfIcEjTQEswbdHC83N" "wIRLRJPSxGko8pg5ediL5fFsb8uze2PUnDuGG/8gqBUjpBojwO4" "CVdBMi+IXd8r0CLPrnPH9hRdxKLFWNYTAjxbt4OvlZJ6HbqF68a" "b+nqsPUJByYUnaBNY4WvGEI5iLTKlhwWGO5bFFkoAGiOn8Ek3bV" "F8Q/r88DkW3gJs+42/Q4JdgaDpwrmT77KNKNLZJbug12qy4o6YG" "V6acPeiYuCPDwZdbMB7kup2mTeeT2gXkBbLMIAA1XWFbXvcclh5" "JFH/qzHpjiWmVgpYZpcPrUiUXygBWuQIDAQAB")
Pendant la mise en place, il est recommandé de lui affecter un petit TTL et l'option de t=y;
de façon à ce qu'une erreur soit rapide à corriger et n'aie pas d'impact sur l'acheminement des emails.
L'autre fichier généré, hexagon.private
, est la clé privée. La placer dans /etc/dkim
et restreindre les permissions à la lecture seule pour OpenDKIM :
mv hexagon.private /etc/dkim chown opendkim: /etc/dkim/hexagon.private chmod a-w /etc/dkim/hexagon.private
Configurer OpenDKIM pour cette clé et ce domaine dans /etc/opendkim/opendkim.conf
:
Domain federez.net KeyFile /etc/dkim/hexagon.private Selector hexagon
Pour communiquer avec Postfix, utiliser un socket unix dans son chroot :
mkdir -p /var/spool/postfix/var/run/opendkim chown opendkim: /var/spool/postfix/var/run/opendkim
Le chemin du socket est configuré dans /etc/default/opendkim
:
SOCKET="local:/var/spool/postfix/var/run/opendkim/opendkim.sock"
Comme suggéré dans /usr/share/doc/opendkim/README.Debian
, pour que Postfix ait accès au socket créé par OpenDKIM, choisir mail comme groupe primaire pour opendkim :
usermod -g mail opendkim
Enfin, configurer Postfix dans /etc/postfix/main.cf
:
milter_default_action = accept smtpd_milters = unix:/var/run/opendkim/opendkim.sock non_smtpd_milters = unix:/var/run/opendkim/opendkim.sock
L'action par défaut accept permet au serveur de continuer à fonctionner s'il y a une erreur sur le socket d'OpenDKIM.