Outils pour utilisateurs

Outils du site


admin:services:mail

Ceci est une ancienne révision du document !


< 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.

Postfix

# apt install postfix

Sur hexagon, configurer Postfix en tant que serveur mail Internet pour le domaine federez.net :

# 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

Postgrey semble peu efficace, il n'est donc pas installé sur dodecagon. Ce qui suit pourra être effacé après migration à l'exception de la configuration de ```smtpd_recipient_restrictions```.

apt install 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 :

smtpd_recipient_restrictions = permit_mynetworks,
                               permit_sasl_authenticated,
                               reject_unauth_destination,
                               check_policy_service inet:127.0.0.1:10023

Vérifier que hostmaster@ et postmaster@ sont bien listés dans /etc/postgrey/whitelist_recipients.

amavisd-new, SpamAssassin et ClamAV

Installer les trois programmes et les extensions leur permettant d'analyser les emails :

# apt install amavisd-new clamav clamav-daemon clamav-freshclam \
#     spamassassin bzip2 libnet-ph-perl libnet-snpp-perl libnet-telnet-perl \
#     lhasa arj rar unrar unrar-free nomarch lzop cabextract razor pyzor p7zip-full pax zip unzip zoo

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é) :

apt install opendkim opendkim-tools

Générer une clé pour hexagon :

opendkim-genkey -a -b 3072 -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'ait 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.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.

Envoi authentifié d'email

Postfix peut authentifier des clients et leur permettre de relayer des emails sortants avec l'implémentation SASL de CyrusIMAP. La convention est d'utiliser le port TCP 587 (submission) pour cette fonctionnalité.

Installer SASL :

apt install sasl2-bin

Dans /etc/default/saslauthd, permettre le démarrage du démon, choisir le mécanisme ldap et choisir un répertoire dans le chroot de Postfix pour que ce dernier puisse accéder au socket unix de saslauthd :

START=yes
MECHANISMS="ldap"
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"

Indiquer à Debian le nouveau répertoire et ajouter postfix au groupe sasl pour l'accès au socket :

dpkg-statoverride --add root sasl 750 /var/spool/postfix/var/run/saslauthd
gpasswd -a postfix sasl

Configurer la connexion au serveur LDAP, dans /etc/saslauthd.conf :

ldap_servers: ldap://ldap.federez.net ldap://ldap-ro.federez.net
ldap_start_tls: yes 
ldap_tls_check_peer: yes 
ldap_search_base: ou=users,dc=federez,dc=net
ldap_filter: (uid=%u)
ldap_bind_dn: cn=saslauth,ou=service-users,dc=federez,dc=net
ldap_password: secret

Un compte de service LDAP a été créé pour permettre à saslauthd d'authentifier des utilisateurs.

Configurer Postfix pour l'authentification SASL, dans /etc/postfix/sasl/smtpd.conf :

pwcheck_method: saslauthd
mech_list: PLAIN LOGIN

Activer le service submission avec authentification SASL, dans /etc/postfix/master.cf :

submission inet n       -       -       -       -       smtpd
  -o syslog_name=postfix/submission
  -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

Boîtes mail

Pour permettre de récupérer ses mails en IMAPS, on installe dovecot :

apt install 'dovecot-(core|imapd|ldap)'

Pour n'écouter que sur le port IMAPS (donc avec une connexion en TLS) :

cat > /etc/dovecot/local.conf <<-EOF
# On force IMAP en TLS dès le début de la connexion
service imap-login {
  inet_listener imap {
    port=0
  }
}
EOF

Ensuite, on édite

/etc/dovecot/conf.d/10-ssl.conf

pour avoir :

ssl = required
 
ssl_cert = </etc/letsencrypt/live/federez.net/fullchain.pem
ssl_key = </etc/letsencrypt/live/federez.net/privkey.pem
 
ssl_dh_parameters_length = 3072
 
ssl_protocols = !SSLv2 !SSLv3 !TLSv1 !TLSv1.1
 
ssl_cipher_list = ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:!ALL
 
ssl_prefer_server_ciphers = yes

On configure postfix pour écrire les mail dans le home des utilisateurs en ajoutant dans

/etc/postfix/main.cf

:

home_mailbox = Maildir/
admin/services/mail.1487893749.txt.gz · Dernière modification : 2017/02/24 00:49 de david.sinquin

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki