Ceci est une ancienne révision du document !
Accepter le SMTP sortant chez le F.A.I
Ex: Freebox- moncompte.free.fr/Ma freebox/Foncionnalités avancées/Blocage du protocole SMTP sortant/“NON”
Linux
On utilise:
-Dovcot (serveur Imap, port 993, TLS/SSL, mot de passe normal de l'utilisateur Unix)
-Postfix (serveur SMTP, port 587, STARTTLS, authentification par id-mot de passe de l'utilisateur Unix)
POSTFIX
La surveillance de Postfix est faite par mailmonitor.sh (/opt/bin de l'Archsyno) lancé par la crontab (root du Syno). Si besoin, il tente de relancer le serveur.
Ajout d'un utilisateur ( =nouvelle boîte ). Ca crée aussi son ~/Maildir (fichiers copiés depuis /etc/skel):
#useradd -m -s nologin toto (ou useradd -m toto ; usermod -s nologin toto) #passwd toto
Le réactiver
usermod -s /sbin/ksh user
Vérifier dans /etc/passwd
Suprression d'un utilisateur:
userdel -r toto (le -r supprime aussi le /home/toto, a utiliser avec precaution)
Les alias sont ajoutés dans /etc/postfix/aliases puis “présentés” au serveur en jouant
postalias /etc/postfix/aliases
De la même manière, la blacklist est dans /etc/postfix/client_checks. Chaque modification du fichier doit être suivie d'un
postmap /etc/postfix/client_checks
Puis d'un reload de Postfix.
Pour supprimer les mails en attente d'envoi:
état des lieux :
postqueue -p
purge :
for message in $(postqueue -p | grep "^[0-9A-F]"|awk '{print $1}') ; do postsuper -d $message ; done
CERTIFICATS SSL (TLS)
[root@www /]# ls -l /etc/postfix/ssl/ total 20 -rw-r--r-- 1 root root 1448 Jun 20 02:33 cacert.pem certificat Certificate Authority -rw------- 1 root root 1854 Jun 20 02:31 cakey.pem clef Certificate Authority -rw-r--r-- 1 root root 956 Jun 20 02:07 smtpd.crt certificat Postfix -rw-r--r-- 1 root root 737 Jun 20 02:05 smtpd.csr osef -rw-r----- 1 root postfix 887 Jun 20 03:40 smtpd.key clef Postfix
cakey.pem : dote d'une passphrase
smtpd.key : pas de passphrase (le serveur doit pouvoir s'en servir seul)
controle certificat
[root@www ssl]# openssl x509 -noout -text -in /etc/postfix/ssl/smtpd.crt
Certificate:
Data:
Version: 1 (0x0)
Serial Number:
b9:c4:2b:1d:59:be:df:2c
Signature Algorithm: sha256WithRSAEncryption
Issuer: C = FR, ST = France, L = Albi, O = chepi.fr, OU = Mail server, CN = www.chepi.fr, emailAddress = contact@chepi.fr
Validity
Not Before: Jun 20 00:07:19 2017 GMT
Not After : Jun 20 00:07:19 2018 GMT
Subject: C = FR, ST = France, L = Albi, O = chepi.fr, OU = Mail server, CN = www.chepi.fr, emailAddress = contact@chepi.fr
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
00:d1:a2:6b:97:a1:e3:61:3f:f6:c9:10:c2:33:07:
96:0a:3e:7d:18:bc:68:dc:6f:2c:ea:4f:b3:50:52:
ad:15:54:73:5f:26:f5:c5:aa:c1:93:a6:f5:95:53:
36:66:75:82:c5:f4:aa:10:5f:c7:03:b9:bd:3f:d4:
7f:f6:0e:db:18:46:bf:8e:0a:4e:c8:b0:31:72:a9:
83:28:86:1e:bd:cd:39:7c:5a:12:c6:42:80:c3:26:
8e:ba:f6:9c:b9:7d:28:62:82:b4:40:cb:1d:12:82:
fe:af:eb:6d:93:33:0e:f0:82:4a:b2:af:85:d2:a1:
fd:8f:9b:ef:b5:3f:ce:05:05
Exponent: 65537 (0x10001)
Signature Algorithm: sha256WithRSAEncryption
40:04:2f:1f:26:e8:d0:7a:e3:db:1f:00:39:fd:29:a8:33:eb:
21:e5:3d:ba:d1:c8:29:ef:3b:12:88:ad:83:6a:1d:0f:51:eb:
18:80:a5:df:0f:74:fa:d9:f5:3b:0f:0d:c1:ca:83:2c:c0:4d:
d0:6b:a4:b2:8a:2f:eb:94:24:9d:3a:d1:39:69:2f:34:61:6f:
c6:18:ae:15:a4:19:9f:52:e4:86:b1:d1:b8:3e:2c:0c:59:dd:
26:41:6d:b9:37:26:84:cf:66:61:6b:d6:d1:27:15:05:64:e7:
a5:ac:cf:61:47:23:a8:b5:e9:86:bd:5f:d8:69:12:dd:d7:26:
OBSD:
Dovecot: /etc/dovecot/dovecot.conf (man dovecot)
Avant de lancer le daemon , modifier /etc/login.conf en y ajoutant:
dovecot:\
:openfiles-cur=512:\
:openfiles-max=2048:\
:tc=daemon:
Opensmtpd: /etc/mail/smtpd.conf (man smtpd.conf)
Clear the mail queue on new CVS builds
rm -rf /var/spool/smtpd/*
Alias:
Editer /etc/mail/aliases et jouer
cd /etc/mail makemap aliases newaliases
Vérif conf smtpd:
root@machine# smtpd -n configuration OK
Surveillance du démon avec mailmonitor.sh lancé par la crontab de root
Ne pas se faire déclarer comme spam:
SPF
Seule la forme de champ TXT est “autorisée”
Sous forme de champ TXT :
chezmoi.tld. TXT "v=spf1 a mx ~all"
(Champ DNS de type SPF chez Gandi tel que celui-ci :
chezmoi.tld. SPF "v=spf1 a mx ~all"
)
Signature DKIM
Cette technique consiste à signer les messages émis par le serveur à l'aide d'une clé privée. On ajoute ensuite dans un champ DNS la clé publique correspondante qui permettra au destinataire de vérifier que le mail reçu provient bien de votre serveur.
On installe dkimproxy avec “pkg_add dkimproxy”
Les commandes suivantes permettent de fabriquer la paire de clés qui servira à signer les mails émis :
Création du dossier pour les clefs
# mkdir -p /etc/dkimproxy/private
On protège le dossier
# chown _dkimproxy:wheel /etc/dkimproxy/private
On modifie les permissions
# chmod 700 /etc/dkimproxy/private
On va dans le dossier
# cd /etc/dkimproxy/private
On génère les clefs
# openssl genrsa -out private.key 1024 # openssl rsa -in private.key -pubout -out public.key
On protège les clefs
# chown _dkimproxy:wheel private.key public.key # chmod 400 private.key
Configuration de Dkimproxy:
Afin de configurer la signature des messages envoyés, il faut éditer le ficher /etc/dkimproxy_out.conf:
listen 127.0.0.1:10027 relay 127.0.0.1:10028 domain chezmoi.tld signature dkim(c=relaxed) signature domainkeys(c=nofws) keyfile /etc/dkimproxy/private/private.key selector pubkey
Il faut ensuite indiquer à opensmtpd de signer les mails. On ajoute dans le fichier /etc/mail/smtpd.conf une ligne pour écouter sur le port 10028 en local, afin d'envoyer les mails que dkimproxy aura signé. On leur colle l'étiquette “DKIM” pour les repérer ensuite.
listen on lo0 port 10028 tag DKIM
Les messages qui auront l'étiquette “DKIM” peuvent être envoyés. On n'envoie plus les mails s'ils ne sont pas passés par dkimproxy.
match tag DKIM for any action "envoi" match auth tag DKIM from any for any action "envoi"
Enfin, les messages pas encore signés doivent être envoyés à dkimproxy. On définit l'action correspondante :
action dkimproxy relay host smtp://127.0.0.1:10027
S'ensuit les règles de correspondance qui vont bien, à placer à la fin du fichier smtpd.conf:
match auth from any for any action dkimproxy match for any action dkimproxy
Enregistrements DNS
On va indiquer le nécessaire pour pouvoir vérifier la signature des messages qui auront un drapeau “pubkey”.
Il s'agira d'un champ DKIM ou TXT selon ce qui est disponible.
Nom de domaine : pubkey._domainkey. Contenu : v=DKIM1; k=rsa; p=… le contenu du fichier public.key, qu'on peut afficher avec cat :
# cat /etc/dkimproxy/private/public.key
Ce qui nous donnera dans la zone DNS le domaine :
pubkey._domainkey IN TXT ( "v=DKIM1; k=rsa; t=s;p=v+Fb…vhP/oB")
Gestion du service DKIM
Activez dkimproxy puis rechargez opensmtpd avant de tester.
# rcctl enable dkimproxy_out # rcctl start dkimproxy_out # rcctl restart smtpd
Test avec https://www.mail-tester.com/ (au moins 8/10)→déjà mieux que gmail^^
Mise en place du WebMail Roundcube:
La taille des pièces jointes est limitée
-à 1 Mo par /etc/httpd.conf ⇒ Ajout de:
connection max request body 1048576000 dans le bloc "www.chepi.fr"
-à 2 Mo par /etc/php-7.0.ini ⇒ modification des valeurs: On complète l'install de php: (/etc/php-7.0.ini)
file_upload = On upload_max_filesize = 700M (au lieu de 2M) post_max_size memory_limit = 200M (au lieu de 128M) allow_url_fopen = On (ou 1)
Le fuseau horaire:
date.timezone = Europe/Paris
Configuration du cache:
opcache.enable=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.enable_file_override=1
On ajoute les bibliothèques “pear php-pspell php-ldap php-curl php-gd php-mcrypt php-intl php-zip” (également utiles pour Bozon).
Afin de les activer il faut les relier dans le dossier /etc/php-7.0.sample:
cd /etc/php-7.0.sample for i in *; do ln -sf ../php-7.0.sample/$i ../php-7.0/; done rcctl restart php70_fpm
Pour fonctionner dans le chroot, php aura besoin de qq fichiers qui se trouvent dans /etc afin de résoudre les noms de domaines, d'être à l'heure, vérifier les certificats, utiliser sh:
cd /var/www #on va dans le chroot mkdir etc cp /etc/resolv.conf etc/resolv.conf cp /etc/localtime etc/localtime mkdir etc/ssl cp /etc/ssl/cert.pem etc/ssl/cert.pem cp /bin/sh /var/www/bin
/etc/httpd.conf : Ajout du serveur “mx.chepi.fr”
/var/www/roundcubemail/config/config.inc.php : Pour utiliser l'imap et Smtp sécurisés (993 et 587), on zape la vérification du certificat:
$config['smtp_server'] = 'tls://%n'; $config['smtp_conn_options'] = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, ), );