Configuration d'un serveur de mail postfix sur Raspbian

Ce post fait parti d'une série sur l'installation d'un Raspberry Pi :

Installation de paquets supplémentaires

Installation des paquets nécessaires :

apt-get install postfix postgrey dovecot-pop3d

Configuration de postgrey

La configuration par défaut convient bien… donc rien à faire.

Configuration de dovecot

La configuration par défaut convient globalement… mais on veut quand même que le POP3 passe par du SSL, pour cela éditer le fichier /etc/dovecot/conf.d/10-ssl.conf et y mettre :

ssl = required
ssl_cert = </etc/dovecot/dovecot.pem
ssl_key = </etc/dovecot/private/dovecot.pem

Je veux aussi stocker les mails dans le répertoire de l'utilisateur. Éditer /etc/dovecot/conf.d/10-mail.conf :

mail_location = maildir:~/Maildir

Pour activer SASL, éditer /etc/dovecot/conf.d/10-master.conf pour y ajouter:

# Postfix smtp-auth unix_listener /var/spool/postfix/private/auth { mode = 0666 }

Il faut générer un certificat autosigné (si vous n'en avez pas un signé) :

openssl req -new -x509 -days 3650 -nodes -out /etc/dovecot/dovecot.pem -keyout /etc/dovecot/private/dovecot.pem

C'est généreux, il est valide une dizaine d'années…

Configuration de postfix

Édition de /etc/postfix/main.cf :

myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no 
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = raspi.xael.org
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = raspi.xael.org, raspi, localhost.localdomain, localhost, fl-organisation.com
relayhost = 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = ipv4

home_mailbox = Maildir/
mailbox_command =

slow_destination_recipient_limit = 10
slow_destination_concurrency_limit = 2

virtual_alias_domains = xael.org
virtual_alias_maps = hash:/etc/postfix/virtual_alias

error_notice_recipient = postmaster@xael.org

# Postgrey
smtpd_recipient_restrictions =
        permit_mynetworks    
        permit_sasl_authenticated
        reject_unauth_destination
        check_policy_service inet:127.0.0.1:10023

# Local sender auth
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination check_policy_service inet:127.0.0.1:10023

Ajout à la fin du fichier /etc/postfix/master.cf :

slow unix - - n - 5 smtp
  -o syslog_name=postfix-slow
  -o smtp_destination_concurrency_limit=3
  -o slow_destination_rate_delay=1

Édition de /etc/aliases :

postmaster: root
patrick.dupond: pdupond, patrick.dupond@gmail.com
patrice.dupont: pdupont
admin:root
  • Les mails adressés à Patrick seront stockés en local dans sa boîte et envoyé vers sa boîte gmail.
  • Les mails adressés à Patrice seront uniquement stockés en local.

Ne pas oublier de leur créer des comptes locaux :

adduser pdupond
adduser pdupont

Édition de /etc/postfix/virtual_alias :

moi@xael.org maboite@gmail.com
liste@xael.org mail1@gmail.com mail2@gmail.com mail3@gmail.com 
@xael.org catchall@gmail.com
  • Les mails envoyés à moi seront envoyés vers maboite@gmail.com.
  • Les mails envoyés à liste seront envoyés à plusieurs destinataires.
  • La dernière ligne est un catchall qui récupère tout ce qui n'est pas addressé à un destinataire en particulier.

et compilation par :

postalias /etc/aliases
postmap /etc/postfix/virtual_alias

Et hop, on redémarre tout

service dovecot restart
service postgrey restart
service postfix restart

Pour vérifier que cela fonctionne bien, jetter un œil dans /var/log/mail.log.

La suite

C'est par là : configuration d'openvpn