WikiMiNET

La documentation technique et administrative

Outils pour utilisateurs

Outils du site


wiki:mail:smtp

Installation d'un serveur SMTP MiNET

Des versions plus récentes des fichiers de configuration se trouvent peut-être sur Gitlab.

Réseau

# cat /etc/network/interfaces 
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 192.168.102.18
        netmask 255.255.255.0

auto eth2
iface eth2 inet static
        address 157.159.40.18
        netmask 255.255.255.128
        gateway 157.159.40.1

iface eth2 inet6 static
        address 2001:660:3203:422::A18
        netmask 64
        gateway 2001:660:3203:422::1
        up echo 0 > /proc/sys/net/ipv6/conf/all/autoconf
                                                                                              
auto eth103                                                                                   
iface eth103 inet static                                                                      
        address 192.168.103.18                                                                
        netmask 255.255.255.0

auto eth14
iface eth14 inet static
        address 192.168.14.7
        netmask 255.255.255.0

Paquets

apt-get install postfix sasl2-bin libsasl2-modules libsasl2-2 opendkim [opendkim-tools]

Configuration de l'authentification

# cat /etc/saslauthd.conf 
# LDAP MiNET
ldap_servers: ldap://ldap.minet.net/
ldap_version: 3

ldap_auth_method: bind
ldap_bind_dn: cn=sasl,ou=auths,ou=systems,ou=equipe,dc=minet,dc=net
ldap_password: couic

ldap_mech_list: plain login

ldap_search_base: ou=equipe,dc=minet,dc=net
ldap_filter: (|(&(uid=%u)(objectClass=gosaMailAccount)(|(gosaMailDeliveryMode=*L*)(gosaMailDeliveryMode=*V*)(gosaMailDeliveryMode=*I*)))(&(cn=%u)(cn=cyradmin)))

Dans /etc/default/saslauthd :

MECHANISMS="ldap"
THREADS=10
OPTIONS="-O /etc/saslauthd.conf -c -m /var/spool/postfix/var/run/saslauthd"

Les logs d'authentification sont situés dans /var/log/auth.log.

# cat /etc/postfix/sasl/smtpd.conf 
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5

Configuration du serveur mail

##########################
# Configuration générale #
##########################

# Nom de domaine
mydomain = minet.net

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

# On diminue le temps de séjour dans la file.
maximal_queue_lifetime = 2h
bounce_queue_lifetime = 2h

########################
# Configuration réseau #
########################

# Autorisation de l'ipv6 (ipv4 par défaut)
inet_protocols = all

# Réseaux autorisés à relayer via la machine
mynetworks = 127.0.0.0/8, 192.168.1.0/24, 192.168.14.0/24, 192.168.102.0/24, 192.168.103.0/24, [2001:660:3203:430::]/64, 157.159.40.243/32

#######################
# Transport des mails #
#######################

# Machine à qui on transmet le courier non local (par défaut, adresse de destination)
relayhost = mx.minet.net:10025

#######################################
# Configuration de l'authentification #
# sur le LDAP avec SASL               #
#######################################

# Activation sasl
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous

# Interopérabilité avec de vieux clients
broken_sasl_auth_clients = yes

# Ajouter le login de l'authentification à l'en-tête du message
smtpd_sasl_authenticated_header = yes

######################
# Règles de filtrage #
######################

# HELO nécessaire
smtpd_helo_required = yes

# Restriction sur le port 25 : autorisation seulement sur le réseau local
smtpd_recipient_restrictions =
        permit_mynetworks,
        reject

# Restrictions sur les ports authentifiés
submission_recipient_restrictions =
        permit_sasl_authenticated,
        reject

############
# Sécurité #
############

# Affiche l'hostname d'un serveur offrant du starttls
smtp_tls_note_starttls_offer = yes

# Certificats
smtpd_tls_cert_file = /etc/postfix/tls/cert-minet.net.pem
smtpd_tls_key_file = /etc/postfix/tls/key-minet.net.pem

# Activation de SSL/TLS
smtpd_use_tls = yes
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s

# DKIM
milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
# cat /etc/postfix/master.cf 
#
# Postfix master process configuration file.  For details on the format
# of the file, see the master(5) manual page (command: "man 5 master").
#
# Do not forget to execute "postfix reload" after editing this file.
#
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       -       -       -       smtpd
submission inet n       -       -       -       -       smtpd
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_recipient_restrictions=$submission_recipient_restrictions
smtps     inet  n       -       -       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_recipient_restrictions=$submission_recipient_restrictions
#628      inet  n       -       -       -       -       qmqpd
pickup    fifo  n       -       -       60      1       pickup
cleanup   unix  n       -       -       -       0       cleanup
qmgr      fifo  n       -       n       300     1       qmgr
#qmgr     fifo  n       -       -       300     1       oqmgr
tlsmgr    unix  -       -       -       1000?   1       tlsmgr
rewrite   unix  -       -       -       -       -       trivial-rewrite
bounce    unix  -       -       -       -       0       bounce
defer     unix  -       -       -       -       0       bounce
trace     unix  -       -       -       -       0       bounce
verify    unix  -       -       -       -       1       verify
flush     unix  n       -       -       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       -       -       -       smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay     unix  -       -       -       -       -       smtp
        -o smtp_fallback_relay=
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq     unix  n       -       -       -       -       showq
error     unix  -       -       -       -       -       error
retry     unix  -       -       -       -       -       error
discard   unix  -       -       -       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       -       -       -       lmtp
anvil     unix  -       -       -       -       1       anvil
scache    unix  -       -       -       -       1       scache

Configuration de DKIM

Génération des clés :

opendkim-genkey -r -s mail -d minet.net

Placer la clé privée dans /etc/postfix/dkim/minetnet_mail.private, et le contenu de mail.txt dans un champ DNS du domaine minet.net.

Dans /etc/default/opendkim :

SOCKET="inet:8891@localhost"

Puis dans /etc/opendkim.conf :

Domain                  minet.net
KeyFile                 /etc/postfix/dkim/minetnet_mail.private
Selector                mail

InternalHosts           192.168.102.0/24, 192.168.103.0/24, 192.168.14.0/24

Cela permet d'accepter sans problèmes et de signer les messages des vlans privés, en plus des messages soumis directement au smtp.

wiki/mail/smtp.txt · Dernière modification: 2020/06/27 18:16 (modification externe)