Sur mon serveur entre autres services j'ai mon propre serveur mail. Cela me permet 1 d'apprendre comment ça marche et 2 d'avoir la main sur ce service (même si j'utilise pas mal gmail à coté...). J'ai donc dû installer et configurer les différents outils pour faire tourner un serveur mail complet.
J'ai passé pas mal de temps à écumer les différents tutos et j'ai jamais trouvé un truc propre et efficace, qui marchait et qui expliquait comment ça marchait. Et les docs sont franchement indigestes. Donc, après pas mal d'essais divers et variés, je vous livre ma config qui marche (bien même) et qui est somme toute plutôt propre. Le tuto va être en plusieurs parties vu qu'il y a plusieurs logiciels :
- [Introduction] : Bah, ce que vous êtes en train de lire en fait.
- Installation des paquets et préparation du système : Comme son nom l'indique
- Configuration de Postfixadmin : Gestion des domaines et utilisateurs virtuels.
- Configuration de Postfix : Le logiciel qui permet de faire du smtp : faire passer des mails de serveur en serveur.
- Configuration de Dovecot : Le logiciel qui permet de faire de l'imap : récupérer les mails qui sont arrivés et les mettre dans des jolis dossiers.
- Installation de SpamAssassin; Permet d'identifier les mails frauduleux
- Installation de Sieve: permet le filtrage automatique des emails
- Tester la configuration et utiliser un client mail
Concernant la configuration, on voit que je n'utilise rien d'exotique. Je suis comme d'habitude sur une debian 12 stable.
Toutefois, deux trois choses à noter :
- Je suppose que vous avez déjà un serveur DNS (bind) qui tourne, soit sur votre machine soit chez un hébergeur, sur lequel vous pouvez modifier les enregistrements.
- Vu le point précédent, je suppose que vous avez aussi au moins un nom de domaine (voire plusieurs !).
- Enfin, je travaille avec des utilisateurs virtuels : tout est en base de données, ce qui a à mon sens de nombreux avantages. Mais change pas mal la config.
Je vais écrire ce tuto en plusieurs fois, mais promis, j'essaie de faire ça vite ;)
C'est parti, vous êtes bien installés ? En avant !
Installer les paquets :
Toujours bon d'avoir un serveur à jour :
apt update
apt upgrade
Installation du serveur web (pour postfixadmin et roundcube). Pensez à bien noter votre mot de passe root mysql :
apt install apache2 php mariadb-server
Pour pas se fatiguer avec l'administration des bases de données :
apt install phpmyadmin
Lire ce tuto pour une installation détaillé de LAMP:
Si vous avez exim4 (autre serveur smtp) d'installé, il faut le retirer :
apt purge 'exim4*'
Maintenant, l'installation de postfix, avec la couche mysql (les utilisateurs virtuels seront en base de données) et sasl2 pour l'authentification :
apt install postfix postfix-mysql libsasl2-modules sasl2-bin
Répondez "site internet" à la première question (les autres ne nous intéressent pas), puis donnez le nom de domaine que vous avez pris (example.org par exemple) à la suivante.
Il faut installer postfixadmin, qui servira à gérer les domaines et utilisateurs virtuels :
apt install postfixadmin
Utilisez la configuration automatique avec apache2. Postfixadmin créée son propre utilisateur, laissez le générer un mot de passe aléatoire, nous allons créer notre propre utilisateur plus loin.
Ensuite, installation de Dovecot :
apt install dovecot-mysql dovecot-pop3d dovecot-imapd dovecot-managesieved
Sieve permet de placer les mails automatiquement dans des dossiers (pratique !)
Un peu de configuration :
Création de la base de données :
Lors de l'installation de postfixadmin, la base de données à été crée automatiquement, et un utilisateur a été créé pour manipuler les comptes virtuels. Toutefois, pour des raisons de sécurité, le démon Postfix utilisera un autre utilisateur pour accéder à ces données, qui ne pourra que les lire.
Pour cela, accédez à phpmyadmin (http://example.org/phpmyadmin
par défaut), connectez vous en tant que root avec le mot de passe spécifié à l'installation de mysql-server.
Une fois connecté, cliquez sur l'onglet "Privilèges" :
En bas du tableau des utilisateurs, cliquez sur "Ajouter un utilisateur". Pour le tutorial, on appellera l'utilisateur mailuseravec le mot de pass azerty.
Bien entendu prenez un mot de passe solide (evitez le caractere "#" dans le mot de passe).
Si vous modifiez le nom, pensez à répercuter la modification dans la suite du tutoriel.
Pensez à forcer le client en Local uniquement (valeur localhost). Personne n'est censé se connecter à cet utilisateur depuis l'extérieur.
Une fois l'utilisateur créé, cliquez dans sa ligne sur le lien Changer les privilèges
:
Scrollez un peu pour découvrir les "Privilèges spécifiques à une base de données", et ajoutez des privilèges pour la base de données postfixadmin
:
Donnez UNIQUEMENT le droit "select" : il n'y a rien besoin d'autre.
Et voila ! La partie base de données est prête !
Enregistrement DNS :
Pour indiquer au monde entier que c'est votre serveur qui s'occupe des mails pour votre domaine, il faut ajouter un resource record DNS de type MX. Concrètement, si vous avez votre propre serveur DNS, il faut modifier le ficher /etc/bind/db.example.org
. Si vous utilisez le DNS de votre hébergeur, allez chercher dans les menus "Zone DNS". Il faut rajouter un enregistrement comme ceci :
@ IN MX 10 1.2.3.4 ;bien sur mettez votre propre IP ici !
On en profite pour rajouter un sous domaine utile :
mail IN A 1.2.3.4 ;idem
Et voila ! Il n'y a plus qu'a attendre qu'il se propage.
Utilisateur vmail :
L'utilisateur vmail sera celui qui va gérer les emails :
groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /var/vmail -m
Son home directory (/var/vmail) va contenir tous les mails reçus sur le système.
Préparer les certificats :
Pour être un peu tranquilles (un peu de chiffrement n'a jamais tué) on va utiliser des connexions chiffrées. Ca retiendra pas la NSA, mais ça embêtera les pirates du dimanche.
openssl req -new -x509 -days 3650 -nodes -newkey rsa:4096 -out /etc/ssl/certs/mailserver.pem -keyout /etc/ssl/private/mailserver.pem
Répondez aux questions qui sont posées. Si vous ne voulez rien mettre dans le champ, mettez un point ".".
Dans le champ Organization Name, mettez votre nom Joe Bob
.
Dans le champ Common Name, mettez votre nom de domaine example.org
.
Votre certificat est généré et placé dans /etc/ssl/certs/mailserver.pem
.
Voila pour l'installation ! Prochaine étape : postfixadmin et les utilisateurs virtuels !
Salut à tous ! Nouvelle étape dans le tuto sur l'installation d'un serveur de mail : la configuration de postfixadmin !
Postfixadmin est un module web qui permet de manipuler très simplement les domaines et utilisateurs virtuels en base de données.
Lors de l'installation de postfixadmin, on l'avait connecté à notre base de données avec un utilisateur et un mot de passe aléatoire. Il faut maintenant générer cette base de données. Pour cela, il suffit de se rendre à l'adresse suivante :
http://example.org/postfixadmin/setup.php
Le chargement est un peu long, puisque le setup crée la base de données, puis les résultats s'affichent :
A la fin de la page, on doit créer le mot de passe pour le setup :
Générez le hash du mot de passe :
Copiez le hash obtenu dans le fichier de configuration (dans /etc/postfixadmin
) comme indiqué. Vous devez ensuite créer le compte administrateur, en retapant le mot de passe setup. Attention, mettez un mot de passe différent pour plus de sécurité !
Vous pouvez ensuite vous connecter à l'adresse http://example.org/postfixadmin/login.php
Vous obtenez la page suivante :
Il va maintenant falloir créer les domaines, puis les utilisateurs. Un domaine correspond à un nom de domaine. Par exemple, example.org
. Mais si vous possédez aussi example.com
et que vous voulez aussi des mails sur ce domaine en utilisant le même serveur, c'est tout à fait possible ! Pensez bien à rajouter l'enregistrement MX comme vu dans le tuto précédent. Pour ajouter un domaine, survolez Liste Domaines
et cliquez sur Nouveau domaine
.
Une fois validé, on voit que notre domaine apparait dans la liste des domaines !
Vous pouvez ensuite rajouter les utilisateurs. Pour cela, survolez Liste virtuels
et cliquez sur Ajouter un compte courriel
. Vous arrivez sur cette page :
Entrez les informations,__ décochez "Envoyer le message de bienvenue"__ (on a pas encore configurer ce qu'il faut pour le recevoir !) et validez. Félicitations, vous avez créé votre utilisateur en base de données.
Vous pouvez aussi créer des alias. Il s'agit d'adresses email qui redirigeront les mails vers un autre compte. Par exemple, tout serveur mail doit se doter d'une adresse mail "abuse", pour que l'on puisse signaler du spam en provenance d'un domaine par exemple. Mais si on la met en utilisateur, personne ne s'y connectera jamais ! Il suffit donc de créer un alias depuis abuse@example.com
vers votre mail utlisateur que vous venez de créer.
Pour faire cela, survolez Liste Virtuels
et cliquez sur Ajouter un alias
. Voici la page :
Et voila, votre alias abuse est créé.
MAJ : pour démarrer postfix faire :
postfix start
Vous savez maintenant comment créer domaines, utilisateurs et alias avec postfixadmin. Prochaine étape : faire arriver les emails à destination grâce à Postfix !
Maintenant qu'on a des adresses mail, il pourrait être pratique qu'elles puisse échanger des messages. C'est ce que permet postfix : faire passer des mails d'un serveur à l'autre. Il faut donc relier postfix à la base de données
Domaines :
Pour que postfix ait accès aux domaines, il faut écrire le code suivant dans /etc/postfix/mysql-virtual-mailbox-domains.cf
:
user = mailuser
password = azerty
hosts = 127.0.0.1
dbname = postfixadmin
query = SELECT 1 FROM domain WHERE domain='%s'
(Pensez à mettre votre mot de passe pour l'utilisateur mailuser)
Ce fichier va permettre à postfix, quand il reçoit un mail destiné à user@example.org, de déterminer si notre serveur est bien en charge du domaine example.org. Si c'est le cas, ça veut dire que le domaine se trouve dans notre base de données. Il faut qu'en executant la requête "query", un élément quelconque soit retourné, et rien si le domaine n'est pas présent.
Attention ! Ici, il n'est pas identique de marquer "localhost" et "127.0.0.1" dans le champ hosts. En effet, si vous mettez "localhost", postfix va chercher la socket UNIX de mysql, qui ne sera pas présente. Alors qu'en mettant l'IP, postfix va effectuer une connexion tcp sur le port de mysql.
Pour l'activez, lancez la commande :
postconf -e virtual_mailbox_domains=mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
Cela ajoute la configuration au fichier /etc/postfix/main.cf et recharge automatiquement la configuration de postfix, évitant d'avoir à le faire à la main.
Pour tester si la recherche de domaine fonctionne bien, vous pouvez lancer la commande suivante :
postmap -q example.org mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
Si le domaine example.org
est présent dans vos domaines, la valeur "1" sera affichée, sinon rien.
Boites mails
Ensuite, il faut vérifier si la boite mail existe, exactement comme avec les domaines. Cette fois ci on écrit dans le fichier /etc/postfix/mysql-virtual-mailbox-maps.cf
:
user = mailuser
password = azerty
hosts = 127.0.0.1
dbname = postfixadmin
query = SELECT 1 FROM mailbox WHERE username='%s'
Pour activer :
postconf -e virtual_mailbox_maps=mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
Et pour tester :
postmap -q john@example.org mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
Comme pour le domaine, le résultat est 1 si la boite existe, rien sinon.
Gestion des alias
Il faut maintenant rediriger les alias vers les utilisateurs existant. Dans le fichier /etc/postfix/mysql-virtual-alias-maps.cf
:
user = mailuser
password = azerty
hosts = 127.0.0.1
dbname = postfixadmin
query = SELECT goto FROM alias WHERE address='%s'
Pour activer :
postconf -e virtual_alias_maps=mysql:/etc/postfix/mysql-virtual-alias-maps.cf
Pour tester :
postmap -q abuse@example.org mysql:/etc/postfix/mysql-virtual-alias-maps.cf
Ici le résultat n'est plus le même : c'est l'utilisateur destination qui doit s'afficher, ce qui permet à postfix de faire la correspondance.
Dernière étape très importante : modifier les droits de ces trois fichiers. En effet, ils contiennent en clair des mots de passe SQL. Lancez les deux commandes :
chgrp postfix /etc/postfix/mysql-*.cf
chmod u=rw,g=r,o= /etc/postfix/mysql-*.cf
Comme ça postfix peut continuer à lire les configurations, et les visiteurs indiscrets ne peuvent pas.
Activation du port 587
Beaucoup de FAI bloquent le port 25 (smtp) pour éviter les serveurs de spam. Du coup on utilise le port 587 qui est un port alternatif "standard".
Pour le débloquer, il faut modifier le fichier /etc/postfix/master.cf
et décommenter la ligne :
submission inet n - - - - smtpd
Activation de SASL
Sasl permet de forcer l'authentification pour envoyer des mails, ce qui évite que n'importe quel spammer utilise votre serveur comme relai. Pour activer sasl avec postfix, modifiez le fichier /etc/postfix/main.cf
en ajoutant les lignes suivantes :
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_tls_security_level = may
smtpd_tls_auth_only = yes
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination
Ici on voit plusieurs choses :
- auth_enable : on active l'authentification
- tls_auth_only : on active l'authentification uniquement pour ceux qui ont une connexion TLS. Cela evite que votre mot de passe circule en clair.
- recipient restrictions : on autorise uniquement les connexions en provenance des IP spécifiées dans "mynetwork", les personnes authentifiées correctement avec SASL (et donc avec TLS) et on autorise de relever les mails destinés aux utilisateurs du système.
La ligne la plus importante est la première : elle permet de faire passer l'authentification par dovecot. En effet l'authentification par SASL en passant par postfix est une usine à gaz. Ici, Postfix demande a SASL l'authentification, qui demande à Dovecot. Simple non ?
Voici le master.cf
complet :
#
# Postfix master process configuration file. For details on the format
# of the file, see the master(5) manual page (command: "man 5 master" or
# on-line: http://www.postfix.org/master.5.html).
#
# Do not forget to execute "postfix reload" after editing this file.
#
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (no) (never) (100)
# ==========================================================================
smtp inet n - y - - smtpd -o content_filter=spamassassin
#smtp inet n - y - 1 postscreen
#smtpd pass - - y - - smtpd
#dnsblog unix - - y - 0 dnsblog
#tlsproxy unix - - y - 0 tlsproxy
# Choose one: enable submission for loopback clients only, or for any client.
#127.0.0.1:submission inet n - y - - smtpd
submission inet n - y - - smtpd -o content_filter=spamassassin
# -o syslog_name=postfix/submission
# -o smtpd_tls_security_level=encrypt
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_tls_auth_only=yes
# -o smtpd_reject_unlisted_recipient=no
# Instead of specifying complex smtpd_<xxx>_restrictions here,
# specify "smtpd_<xxx>_restrictions=$mua_<xxx>_restrictions"
# here, and specify mua_<xxx>_restrictions in main.cf (where
# "<xxx>" is "client", "helo", "sender", "relay", or "recipient").
# -o smtpd_client_restrictions=
# -o smtpd_helo_restrictions=
# -o smtpd_sender_restrictions=
# -o smtpd_relay_restrictions=
# -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject_unauth_destination
# -o milter_macro_daemon_name=ORIGINATING
# Choose one: enable submissions for loopback clients only, or for any client.
#127.0.0.1:submissions inet n - y - - smtpd
#submissions inet n - y - - smtpd
# -o syslog_name=postfix/submissions
# -o smtpd_tls_wrappermode=yes
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_reject_unlisted_recipient=no
# Instead of specifying complex smtpd_<xxx>_restrictions here,
# specify "smtpd_<xxx>_restrictions=$mua_<xxx>_restrictions"
# here, and specify mua_<xxx>_restrictions in main.cf (where
# "<xxx>" is "client", "helo", "sender", "relay", or "recipient").
# -o smtpd_client_restrictions=
# -o smtpd_helo_restrictions=
# -o smtpd_sender_restrictions=
# -o smtpd_relay_restrictions=
# -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
#628 inet n - y - - qmqpd
pickup unix n - y 60 1 pickup
cleanup unix n - y - 0 cleanup
qmgr unix n - n 300 1 qmgr
#qmgr unix n - n 300 1 oqmgr
tlsmgr unix - - y 1000? 1 tlsmgr
rewrite unix - - y - - trivial-rewrite
bounce unix - - y - 0 bounce
defer unix - - y - 0 bounce
trace unix - - y - 0 bounce
verify unix - - y - 1 verify
flush unix n - y 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - y - - smtp
relay unix - - y - - smtp
-o syslog_name=postfix/$service_name
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq unix n - y - - showq
error unix - - y - - error
retry unix - - y - - error
discard unix - - y - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - y - - lmtp
anvil unix - - y - 1 anvil
scache unix - - y - 1 scache
postlog unix-dgram n - n - 1 postlogd
#
# ====================================================================
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# Many of the following services use the Postfix pipe(8) delivery
# agent. See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# ====================================================================
#
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
maildrop unix - n n - - pipe
flags=DRXhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
#
# ====================================================================
#
# Recent Cyrus versions can use the existing "lmtp" master.cf entry.
#
# Specify in cyrus.conf:
# lmtp cmd="lmtpd -a" listen="localhost:lmtp" proto=tcp4
#
# Specify in main.cf one or more of the following:
# mailbox_transport = lmtp:inet:localhost
# virtual_transport = lmtp:inet:localhost
#
# ====================================================================
#
# Cyrus 2.1.5 (Amos Gouaux)
# Also specify in main.cf: cyrus_destination_recipient_limit=1
#
#cyrus unix - n n - - pipe
# flags=DRX user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
#
# ====================================================================
# Old example of delivery via Cyrus.
#
#old-cyrus unix - n n - - pipe
# flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
#
# ====================================================================
#
# See the Postfix UUCP_README file for configuration details.
#
uucp unix - n n - - pipe
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
#
# Other external delivery methods.
#
ifmail unix - n n - - pipe
flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp unix - n n - - pipe
flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix - n n - 2 pipe
flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman unix - n n - - pipe
flags=FRX user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user}
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/dovecot-lda -f ${sender} -d ${recipient}
spamassassin unix - n n - - pipe
flags=R user=debian-spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
voici le main.cf
complet :
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#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
# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 3.6 on
# fresh installs.
compatibility_level = 3.6
# 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_tls_security_level=may
smtp_tls_CApath=/etc/ssl/certs
smtp_tls_security_level=may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = localhost
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = localhost.$mydomain, localhost, localhost.localdomain
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 = all
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_tls_security_level = may
smtpd_tls_auth_only = yes
smtpd_recipient_restrictions =
permit_sasl_authenticated
permit_mynetworks
reject_unauth_destination
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
Maintenant qu'on arrive à faire circuler les mails sur notre serveur, et qu'on les arrête quand ils sont pour nous, il faut pouvoir les récupérer pour les mettre dans les dossiers. C'est le rôle de dovecot.
La configuration de dovecot est éclatée dans plusieurs fichiers, qui se trouvent dans /etc/dovecot/conf.d/
.
Configuration auth :
Le premier fichier à modifier est 10-auth.conf
. Il faut modifier les mécanismes de connexions. Votre ligne doit ressembler à :
auth_mechanisms = plain login
Par défaut, dovecot utilise les utilisateurs réels du système. Nous, nous utilisons des utilisateurs en base de données. Il faut donc modifier les includes à la fin du fichier :
#!include auth-system.conf.ext
!include auth-sql.conf.ext
#!include auth-ldap.conf.ext
#!include auth-passwdfile.conf.ext
#!include auth-checkpassword.conf.ext
#!include auth-vpopmail.conf.ext
#!include auth-static.conf.ext
Configuration SQL :
Il faut ensuite modifier le fichier auth-sql.conf.ext
. Commentez les sections userdb
existantes et saisissez celles-ci :
userdb {
driver = static
args = uid=vmail gid=vmail home=/var/vmail/%d/%n
}
Configuration mail :
Dans le fichier 10-mail.conf
, modifiez le paramètre mail_location
comme ceci :
mail_location = maildir:/var/vmail/%d/%n/Maildir
Ainsi, les mails reçus seront placés dans le dossier /var/vmail/[domaine]/[utilisateur]/Maildir
.
Vérifiez que le separator
a bien pour valeur /
, et non .
.
Configuration master :
Dans le fichier 10-master.conf
, dans le bloc service auth
, spécifiez le smtp-auth de postfix :
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
Configuration SSL :
Pour utiliser les certificats SSL créés en partie 1, modifiez le fichier 10-ssl.conf
:
ssl = yes
ssl_cert = </etc/ssl/certs/mailserver.pem
ssl_key = </etc/ssl/private/mailserver.pem
Configuration LDA :
Il faut activer le plugin sieve pour placer les fichier dans les dossiers. Pour cela, dans le fichier 15-lda.conf
, trouvez le bloc protocol lda
(ou créez le si besoin) :
protocol lda {
# Space separated list of plugins to load (default is global mail_plugins).
mail_plugins = $mail_plugins sieve
}
Connexion SQL :
Il faut indiquer à Dovecot comment se connecter à la base de données SQL. Pour cela, modifiez le ficher /etc/dovecot/dovecot-sql.conf.ext
. Le fichier est plutot bien documenté. Trouvez (ou ajoutez à la fin) ces lignes :
driver = mysql
connect = host=127.0.0.1 dbname=postfixadmin user=mailuser password=azerty
password_query = SELECT username,domain,password FROM mailbox WHERE username='%u';
(Pensez à modifier le mot de passe)
Ici aussi, on change les droits de ce fichier vu qu'il contient un mot de passe :
chown root:root /etc/dovecot/dovecot-sql.conf.ext
chmod go= /etc/dovecot/dovecot-sql.conf.ext
Finalisation :
Modifiez les droits du fichier de configuration, pour que dovecot soit lancé en tant qu'utilisateur vmail :
chgrp vmail /etc/dovecot/dovecot.conf
chmod g+r /etc/dovecot/dovecot.conf
Redémarrez dovecot :
service dovecot restart
Comme à chaque redémarrage de service, vérifiez les logs (# tail /var/log/mail.log
). Ils doivent finir par la ligne
... dovecot: master: Dovecot v2.1.7 starting up (core dumps disabled)
Connecter Postfix à Dovecot :
Maintenant, on a d'un coté Postfix qui sait quand un mail qui passe est pour lui, et Dovecot qui sait où mettre les mails qu'on lui donne. Il faut donc que Postfix passe les mails a Dovecot qui les range.
Pour cela, ajoutez les lignes suivantes à la fin du fichier /etc/postfix/master.cf
:
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/dovecot-lda -f ${sender} -d ${recipient}
(Attention, la deuxième ligne est indentée par deux espaces)
Et redémarrez postfix :
service postfix restart
La fin du fichier /var/log/mail.log
:
postfix/master[…]: daemon started -- version 2.9.6, configuration /etc/postfix
Et modifiez la configuration de postfix pour qu'il utilise ce qu'on vient de lui donner :
postconf -e virtual_transport=dovecot
postconf -e dovecot_destination_recipient_limit=1
Et voila pour postfix !
Test de la configuration
Déjà, pour l'instant, notre dossier /var/vmail
est vide. Vous pouvez le vérifier avec un simple tree /var/vmail
ou, si vous n'avez pas la commande tree (que je vous conseille !), simplement ls -R /var/vmail
Maintenant, on va ouvrir les logs dans un terminal, avec la commande :
tail -f /var/log/mail.log
...et envoyer un mail à notre utilisateur :
echo test | mail user@example.com
Si tout marche bien, votre fichier de log devrait ressembler à ça :
Jan 20 08:17:29 hostname postfix/pickup[17343]: 19F9CD00064: uid=0 from=<root>
Jan 20 08:17:29 hostname postfix/cleanup[19091]: 19F9CD00064: message-id=<20150120071729.19F9CD00064@hostname>
Jan 20 08:17:29 hostname postfix/qmgr[5341]: 19F9CD00064: from=<root@hostname>, size=387, nrcpt=1 (queue active)
Jan 20 08:17:29 hostname dovecot: lda(user@example.com): msgid=<20150120071729.19F9CD00064@hostname>: saved mail to INBOX
Jan 20 08:17:29 hostname postfix/pipe[19095]: 19F9CD00064: to=<user@example.com>, relay=dovecot, delay=0.38, delays=0.18/0.03/0/0.16, dsn=2.0.0, status=sent (delivered via dovecot service)
Jan 20 08:17:29 hostname postfix/qmgr[5341]: 19F9CD00064: removed
Si echec mettre la ligne 39 du fichier /etc/postfix/main.cf comme ceci:
mydestination = localhost.info, localhost
Votre log sera peut être un peu différent, mais on voit bien les différentes étapes :
- Postfix récupère le mail et l'arrête vu que c'est pour lui
- Dovecot récupère le mail (avec le plugin lda) pour le placer dans la boite de réception (dossier INBOX)
- Postfix confirme que le mail a été donné à dovecot et que c'est plus son problème
- Postfix vire le mail de sa liste vu que dovecot s'en occupe
Maintenant, votre dossier /var/vmail/
doit ressembler à ça :
/var/vmail/
└── example.com
└── user
└── Maildir
├── cur
├── dovecot.index.cache
├── dovecot.index.log
├── dovecot.mailbox.log
├── dovecot-uidlist
├── dovecot-uidvalidity
├── dovecot-uidvalidity.54a66424
├── new
│ └── 1421738249.M235803P19096.hostname,S=439,W=453
├── subscriptions
└── tmp
On voit que notre mail est bien arrivé, et est placé dans le dossier "new", donc tout va bien !
(Au passage, on voit la mise en forme sympa avec tree pour l'arborescence !)
apt install spamassassin spamc
nano /etc/postfix/master.cf
Change:
smtp inet n - n - - smtpd
To:
smtp inet n - n - - smtpd -o content_filter=spamassassin
Change:
smtps inet n - n - - smtpd
To:
smtps inet n - n - - smtpd -o content_filter=spamassassin
A la fin de fichier, ajoutez:
spamassassin unix - n n - - pipe flags=R user=debian-spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
Pour activer le sujet personnaliser quand un mail est detecté comme spam:
nano /etc/spamassassin/local.cf
et activez (décommentez):
rewrite_header Subject *****SPAM*****
Installation de Sieve:
apt install dovecot-sieve dovecot-managesieved
nano /etc/dovecot/conf.d/20-lmtp.conf
Ajoutez:
protocol lmtp {
postmaster_address = admin@example.com
mail_plugins = $mail_plugins sieve
}
nano /etc/dovecot/conf.d/90-sieve.conf
Ajoutez:
plugin {
sieve = ~/.dovecot.sieve
sieve_global_path = /var/lib/dovecot/sieve/default.sieve
sieve_dir = ~/sieve
sieve_global_dir = /var/lib/dovecot/sieve/
}
Vous pourvez desormais ajouter des filtres avec le webmail Rainloop par exemple:
Voila la configuration que j'ai mis en place pour Thunderbird :
En réception, IMAPS :
- serveur : mail.example.com
- port : 143
- nom d'utilisateur : user@example.com
- sécurité : StartTLS
- Méthode d'authentification : Mot de passe normal
En envoi :
- serveur : mail.example.com
- port : 587
- nom d'utilisateur : user@example.com
- sécurité : StartTLS
- Méthode d'authentification : Mot de passe normal
Vous pouvez maintenant envoyer et recevoir des mails !
Bonjour,
Je vous remercie beaucoup pour ce tutoriel qui est très clair et qui semble bien fait !
Malheureusement, ça ne marche pas complètement pour moi !
En effet lorsque j'arrive au chapitre Test de la Configuration "...et envoyer un mail à notre utilisateur : echo test | mail user@example.com " (bien sûr j'ai adapté l'adresse email destinatrice), dans la log, je n'obtiens pas la même chose que vous, c'est à dire, le passage par DOVECOT ne fonctionne pas ! Je passe directement en envoi SMTP !
Mar 13 16:28:14 mail postfix/pickup[1873]: 6618E120E8A: uid=1000 from=<ricardo@mail.rican.pw>
Mar 13 16:28:14 mail postfix/cleanup[1882]: 6618E120E8A: message-id=<20180313162814.6618E120E8A@mail.rican.pw>
Mar 13 16:28:14 mail postfix/qmgr[1874]: 6618E120E8A: from=<ricardo@mail.rican.pw>, size=407, nrcpt=1 (queue active)
Mar 13 16:28:14 mail postfix/smtp[1884]: 6618E120E8A: to=<anaya.richard@gmail.com> ...
Est-ce que vous avez une idée du problème ?
Alors que j'ai vraiment suivi à la lettre le tutoriel !
Par avance, merci.
Bonjour,
avez-vous vérifié les logs dans /var/log/mail.err ou /var/log/mail.info ou /var/log/mail.log, afin d'avoir une piste ?
avez-vous fait cette partie du tuto ?
Si echec mettre la ligne 39 du fichier /etc/postfix/main.cf comme ceci:
mydestination = localhost.info, localhost
Cdlt.
Bonjour, merci pour ce tuto clair et bien documenté.
Je l'ai suivi à la lettre jusqu'au test, echo test | mail user@example.com
J'ai debian9, php 7.2.3-1 J'ai tenté la modif de la ligne 39...
Voici mes logs:
Mar 20 00:37:52 vps279343 dovecot: master: Warning: Killed with signal 15 (by pid=8080 uid=0 code=kill)
Mar 20 00:37:52 vps279343 dovecot: master: Dovecot v2.2.27 (c0f36b0) starting up for pop3, imap (core dumps disabled)
Mar 20 00:38:07 vps279343 postfix/postfix-script[8147]: stopping the Postfix mail system
Mar 20 00:38:07 vps279343 postfix/master[7320]: terminating on signal 15
Mar 20 00:38:07 vps279343 postfix/postfix-script[8310]: starting the Postfix mail system
Mar 20 00:38:07 vps279343 postfix/master[8312]: daemon started -- version 3.1.8, configuration /etc/postfix
echo coucou | mail contact@usehtech.com
Mar 20 00:40:01 vps279343 dovecot: imap-login: Disconnected (disconnected before auth was ready, waited 0 secs): user=<>, rip=127.0.0.1, lip=127.0.0.1, secured, session=<eg0Gesxnppl/AAAB>
Mar 20 00:40:01 vps279343 dovecot: pop3-login: Disconnected (no auth attempts in 0 secs): user=<>, rip=127.0.0.1, lip=127.0.0.1, secured, session=<OnEGesxnTKd/AAAB>
Mar 20 00:40:01 vps279343 postfix/smtpd[8501]: connect from localhost[127.0.0.1]
Mar 20 00:40:01 vps279343 postfix/smtpd[8501]: lost connection after CONNECT from localhost[127.0.0.1]
Mar 20 00:40:01 vps279343 postfix/smtpd[8501]: disconnect from localhost[127.0.0.1] commands=0/0
Merci pour votre aide...
Bonjour,
LA, comme ça, ça ne me parle pas.
Juste une question, avez vous fait les enregistrements DNS smtp chez votre hébergeur ?
cdlt.
Magnifique tuto : clair, opérationnel, qui explique bien et très bien écrit ! Mille merci.
Juste pour la commande de test de la config, et pour les incultes comme moi, la commande mail n'est accessible qu'après install de mailutils. Un détail...
Encore bravo !
Merci ^^.
Mais je tiens à dire que ce tuto n'est pas de moi (enfin je l'ai juste un peu adapté pour Débian 9) mais de :
https://www.tictech.info/post/mail_intro
Cdlt.
Merci pour la réponse, oui mes enregistrements DNS sont correct et actifs
OUPS......Quelle bonne idée, en fait mes enregistrements DNS liés aux mails sont les suivants:
usehtech.com 3600 MX Mon IP
mail.usehtech.com 3600 A Mon IP
usehtech.com 3600 SPF "v=spf1 a mx -all"
Il manquerait donc les infos relatives au SMTP ?
Ah oui effectivement, ça peut aider, ça doit être un truc du genre:
IN MX 10 smtp.usehtech.com
Bon courage.
cdlt.
Bonjour, J'ai tout réinstallé sur un autre serveur, il y a du progrès.
Je parviens à envoyer des mails mais pas à en recevoir, sauf en boucle si je me les envoie à moi même via roundcube.
Voici mon mail queue.
Apr 6 21:00:42 vps-33397 postfix/smtpd[10302]: connect from localhost[::1]
Apr 6 21:00:42 vps-33397 postfix/smtpd[10302]: 2D9A6E12C4: client=localhost[::1]
Apr 6 21:00:42 vps-33397 postfix/cleanup[10306]: 2D9A6E12C4: message-id=<4ea14583b09c73de6b697b567277cc39@usehtech.com>
Apr 6 21:00:42 vps-33397 postfix/qmgr[10184]: 2D9A6E12C4: from=<contact@usehtech.com>, size=622, nrcpt=1 (queue active)
Apr 6 21:00:42 vps-33397 spamc[10309]: connect to spamd on 127.0.0.1 failed, retrying (#1 of 3): Connection refused
Apr 6 21:00:42 vps-33397 dovecot: imap-login: Login: user=<contact@usehtech.com>, method=PLAIN, rip=::1, lip=::1, mpid=10310, secured, session=<Sl46rDJp0J8AAAAAAAAAAAAAAAAAAAAB>
Apr 6 21:00:42 vps-33397 postfix/smtpd[10302]: disconnect from localhost[::1] ehlo=1 mail=1 rcpt=1 data=1 quit=1 commands=5
Apr 6 21:00:42 vps-33397 dovecot: imap(contact@usehtech.com): Logged out in=515 out=657
Apr 6 21:00:43 vps-33397 dovecot: imap-login: Login: user=<contact@usehtech.com>, method=PLAIN, rip=::1, lip=::1, mpid=10312, secured, session=<gZdHrDJp1J8AAAAAAAAAAAAAAAAAAAAB>
Apr 6 21:00:43 vps-33397 dovecot: imap(contact@usehtech.com): Logged out in=44 out=535
Apr 6 21:00:43 vps-33397 spamc[10309]: connect to spamd on 127.0.0.1 failed, retrying (#2 of 3): Connection refused
Apr 6 21:00:43 vps-33397 dovecot: imap-login: Login: user=<contact@usehtech.com>, method=PLAIN, rip=::1, lip=::1, mpid=10314, secured, session=<eLNMrDJp2J8AAAAAAAAAAAAAAAAAAAAB>
Apr 6 21:00:43 vps-33397 dovecot: imap(contact@usehtech.com): Logged out in=292 out=2735
Apr 6 21:00:43 vps-33397 dovecot: imap-login: Login: user=<contact@usehtech.com>, method=PLAIN, rip=::1, lip=::1, mpid=10316, secured, session=<L1BNrDJp2p8AAAAAAAAAAAAAAAAAAAAB>
Apr 6 21:00:43 vps-33397 dovecot: imap(contact@usehtech.com): Logged out in=82 out=622
Apr 6 21:00:44 vps-33397 spamc[10309]: connect to spamd on 127.0.0.1 failed, retrying (#3 of 3): Connection refused
Apr 6 21:00:44 vps-33397 spamc[10309]: connection attempt to spamd aborted after 3 retries
Apr 6 21:00:44 vps-33397 postfix/pickup[10183]: 5CA3AE12EE: uid=116 from=<contact@usehtech.com>
Apr 6 21:00:44 vps-33397 postfix/pipe[10307]: 2D9A6E12C4: to=<francois.de-vos@laposte.net>, relay=spamassassin, delay=2.2, delays=0.16/0.01/0/2, dsn=2.0.0, status=sent (delivered via spamassassin service)
Apr 6 21:00:44 vps-33397 postfix/qmgr[10184]: 2D9A6E12C4: removed
Apr 6 21:00:44 vps-33397 postfix/cleanup[10306]: 5CA3AE12EE: message-id=<4ea14583b09c73de6b697b567277cc39@usehtech.com>
Apr 6 21:00:44 vps-33397 postfix/qmgr[10184]: 5CA3AE12EE: from=<contact@usehtech.com>, size=738, nrcpt=1 (queue active)
Apr 6 21:00:48 vps-33397 dovecot: imap-login: Login: user=<contact@usehtech.com>, method=PLAIN, rip=::1, lip=::1, mpid=10321, secured, session=<mWKerDJp4J8AAAAAAAAAAAAAAAAAAAAB>
Apr 6 21:00:48 vps-33397 dovecot: imap(contact@usehtech.com): Logged out in=290 out=4662
Apr 6 21:01:14 vps-33397 postfix/smtp[10319]: connect to smtpz4.laposte.net[194.117.213.1]:25: Connection timed out
Apr 6 21:01:14 vps-33397 postfix/smtp[10319]: 5CA3AE12EE: to=<francois.de-vos@laposte.net>, relay=none, delay=30, delays=0.02/0.01/30/0, dsn=4.4.1, status=deferred (connect to smtpz4.laposte.net[194.117.213.1]:25: Connection timed out)
Apr 6 21:01:43 vps-33397 dovecot: imap-login: Login: user=<contact@usehtech.com>, method=PLAIN, rip=::1, lip=::1, mpid=10330, secured, session=<n3nhrzJp4p8AAAAAAAAAAAAAAAAAAAAB>
Apr 6 21:01:43 vps-33397 dovecot: imap(contact@usehtech.com): Logged out in=195 out=1711
Apr 6 21:02:43 vps-33397 dovecot: imap-login: Login: user=<contact@usehtech.com>, method=PLAIN, rip=::1, lip=::1, mpid=10342, secured, session=<aHt0szJp5J8AAAAAAAAAAAAAAAAAAAAB>
Apr 6 21:02:43 vps-33397 dovecot: imap(contact@usehtech.com): Logged out in=195 out=1711
Apr 6 21:03:07 vps-33397 postfix/qmgr[10184]: 784E6E12EA: from=<contact@usehtech.com>, size=693, nrcpt=1 (queue active)
Apr 6 21:03:37 vps-33397 postfix/smtp[10344]: connect to smtpz4.laposte.net[194.117.213.1]:25: Connection timed out
Apr 6 21:03:37 vps-33397 postfix/smtp[10344]: 784E6E12EA: to=<francois.de-vos@laposte.net>, relay=none, delay=653, delays=623/0.03/30/0, dsn=4.4.1, status=deferred (connect to smtpz4.laposte.net[194.117.213.1]:25: Connection timed out)
Apr 6 21:03:44 vps-33397 dovecot: imap-login: Login: user=<contact@usehtech.com>, method=PLAIN, rip=::1, lip=::1, mpid=10348, secured, session=<nzEXtzJp7J8AAAAAAAAAAAAAAAAAAAAB>
Apr 6 21:03:44 vps-33397 dovecot: imap(contact@usehtech.com): Logged out in=195 out=1711
Apr 6 21:04:44 vps-33397 dovecot: imap-login: Login: user=<contact@usehtech.com>, method=PLAIN, rip=::1, lip=::1, mpid=10350, secured, session=<IyyrujJp8J8AAAAAAAAAAAAAAAAAAAAB>
Apr 6 21:04:44 vps-33397 dovecot: imap(contact@usehtech.com): Logged out in=195 out=1711
Apr 6 21:05:44 vps-33397 dovecot: imap-login: Login: user=<contact@usehtech.com>, method=PLAIN, rip=::1, lip=::1, mpid=10361, secured, session=<ulI+vjJp8p8AAAAAAAAAAAAAAAAAAAAB>
Apr 6 21:05:44 vps-33397 dovecot: imap(contact@usehtech.com): Logged out in=195 out=1711
Apr 6 21:06:44 vps-33397 dovecot: imap-login: Login: user=<contact@usehtech.com>, method=PLAIN, rip=::1, lip=::1, mpid=10363, secured, session=<QALSwTJp9p8AAAAAAAAAAAAAAAAAAAAB>
Apr 6 21:06:44 vps-33397 dovecot: imap(contact@usehtech.com): Logged out in=195 out=1711
Si vous avez une idée?
Bonjour,
Pourriez vous vérifier que spamassassin est bien démarré ?
/etc/init.d/spamassassin status
Essaye de créer un fichier "/etc/spamassassin/spamc.conf" et met dedans:
-d 127.0.0.1
ça dit quoi ?
bonjour h2tp et merci pour ton aide précieuse
J'avais déjà procédé à la création de ce fichier, voila ce que ça dit:
● spamassassin.service - Perl-based spam filter using text analysis
Loaded: loaded (/lib/systemd/system/spamassassin.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Après un:
systemctl enable spamassassin.service
j'obtiens:
● spamassassin.service - Perl-based spam filter using text analysis
Loaded: loaded (/lib/systemd/system/spamassassin.service; enabled; vendor preset: enabled)
Active: inactive (dead)
Mais je ne parviens toujours pas à envoyer de mail
J'ai aussi changé dans : /etc/default/spamassassin
ENABLED=1
Je précise aussi que je reçois bien les mails de l'extérieur, mais que la commande :
echo coucou | mail contact@usehtech.com ne donne rien
voici les logs
Apr 9 02:50:19 vps-33397 dovecot: imap(contact@usehtech.com): Logged out in=121 out=1042
echo coucou | mail contact@usehtech.com
Apr 9 02:50:56 vps-33397 dovecot: imap-login: Login: user=<contact@usehtech.com>, method=PLAIN, rip=::1, lip=::1, mpid=9395, secured, session=<pGJ6zF9pzrIAAAAAAAAAAAAAAAAAAAAB>
Apr 9 02:50:56 vps-33397 dovecot: imap(contact@usehtech.com): Logged out in=294 out=2306
Apr 9 02:50:58 vps-33397 dovecot: imap-login: Login: user=<contact@usehtech.com>, method=PLAIN, rip=::1, lip=::1, mpid=9397, secured, session=<zB+SzF9p0LIAAAAAAAAAAAAAAAAAAAAB>
Apr 9 02:50:58 vps-33397 dovecot: imap(contact@usehtech.com): Logged out in=294 out=2306
Apr 9 02:50:59 vps-33397 dovecot: imap-login: Login: user=<contact@usehtech.com>, method=PLAIN, rip=::1, lip=::1, mpid=9399, secured, session=<xYeazF9p0rIAAAAAAAAAAAAAAAAAAAAB>
Et enfin:
● spamassassin.service - Perl-based spam filter using text analysis
Loaded: loaded (/lib/systemd/system/spamassassin.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2018-04-09 02:59:32 CEST; 3min 51s ago
Process: 9478 ExecStart=/usr/sbin/spamd -d --pidfile=/var/run/spamd.pid $OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 9480 (/usr/sbin/spamd)
Tasks: 3 (limit: 4915)
CGroup: /system.slice/spamassassin.service
├─9480 /usr/sbin/spamd -d --pidfile=/var/run/spamd.pid --create-prefs --max-children 5 --helper-home-dir
├─9481 spamd child
└─9482 spamd child
Apr 09 02:59:28 vps-33397 systemd[1]: Starting Perl-based spam filter using text analysis...
Apr 09 02:59:29 vps-33397 spamd[9478]: logger: removing stderr method
Apr 09 02:59:32 vps-33397 spamd[9480]: spamd: server started on IO::Socket::IP [::1]:783, IO::Socket::IP [127.0.0.1]:783 (running version 3.4.1)
Apr 09 02:59:32 vps-33397 spamd[9480]: spamd: server pid: 9480
Apr 09 02:59:32 vps-33397 spamd[9480]: spamd: server successfully spawned child process, pid 9481
Voila qui fonctionne en local maintenant:
04:05:42 [root@vps-33397:/] # echo Test | mail contact@usehtech.com
04:07:51 [root@vps-33397:/] # tail /var/log/mail.log
Apr 9 04:06:55 vps-33397 dovecot: imap-login: Login: user=<contact@usehtech.com>, method=PLAIN, rip=::1, lip=::1, mpid=12079, secured, session=<KIQ03GBpSLQAAAAAAAAAAAAAAAAAAAAB>
Apr 9 04:06:55 vps-33397 dovecot: imap(contact@usehtech.com): Logged out in=90 out=876
Apr 9 04:07:51 vps-33397 postfix/pickup[11617]: 64F0CE1322: uid=0 from=<root@vps-33397.fhnet.fr>
Apr 9 04:07:51 vps-33397 postfix/cleanup[12084]: 64F0CE1322: message-id=<20180409020751.64F0CE1322@vps-33397.fhnet.fr>
Apr 9 04:07:51 vps-33397 postfix/qmgr[11618]: 64F0CE1322: from=<root@vps-33397.fhnet.fr>, size=332, nrcpt=1 (queue active)
Apr 9 04:07:51 vps-33397 dovecot: lda(contact@usehtech.com): msgid=<20180409020751.64F0CE1322@vps-33397.fhnet.fr>: saved mail to INBOX
Apr 9 04:07:51 vps-33397 postfix/pipe[12106]: 64F0CE1322: to=<contact@usehtech.com>, relay=dovecot, delay=0.51, delays=0.41/0.01/0/0.09, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr 9 04:07:51 vps-33397 postfix/qmgr[11618]: 64F0CE1322: removed
Apr 9 04:07:55 vps-33397 dovecot: imap-login: Login: user=<contact@usehtech.com>, method=PLAIN, rip=::1, lip=::1, mpid=12113, secured, session=<6SPJ32BpUrQAAAAAAAAAAAAAAAAAAAAB>
Apr 9 04:07:55 vps-33397 dovecot: imap(contact@usehtech.com): Logged out in=90 out=908
04:08:13 [root@vps-33397:/] #
mais je ne peux toujours rien envoyer...
J'avoue que je ne vois pas trop ou si situe le problème, ce n'est peux être pas spamassassin le problème ...
Pour info mon
ENABLED=1
chez moi est à 0
Sinon tu est sous quel OS ?
Aussi je pense que tu devrais changer ton HOSTNAME.
C'est mieux si il correspond au CommonName, pour toi: usehtech
Je continuerais de regarder un peu mais le temps me manque en ce moment. ^^
Courage, n'empêche ça y est presque ..
Je suis sous debian9 stretch
voici mon hostname,
09:49:54 [root@vps-33397:~] # hostname
vps-33397
10:09:39 [root@vps-33397:~] # hostname -f
vps-33397.fhnet.fr
10:09:50 [root@vps-33397:~] #
Voici le tuto que j'ai suivi pour l'installation du serveur:
The Perfect Server - Debian 9 (Stretch) with Apache, BIND, Dovecot, PureFTPD and ISPConfig 3.1 - Page 1
Merci pour votre aide
Voici mon main.cf
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#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 = /usr/share/doc/postfix
# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on
# fresh installs.
compatibility_level = 2
# 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_tls_cert_file=/etc/ssl/certs/mailserver.pem
#smtpd_tls_key_file=/etc/ssl/private/mailserver.pem
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.
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = vps-33397.fhnet.fr
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $myhostname, vps-33397.fhnet.fr, localhost.fhnet.fr, localhost
#mydestination = localhost.fhnet.fr, localhost
#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 = all
html_directory = /usr/share/doc/postfix/html
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_tls_security_level = may
smtpd_tls_auth_only = yes
smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
et mon 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" or
# on-line: http://www.postfix.org/master.5.html).
#
# Do not forget to execute "postfix reload" after editing this file.
#
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (no) (never) (100)
# ==========================================================================
#smtp inet n - y - - smtpd
smtp inet n - n - - smtpd -o content_filter=spamassassin
#smtp inet n - y - 1 postscreen
#smtpd pass - - y - - smtpd
#dnsblog unix - - y - 0 dnsblog
#tlsproxy unix - - y - 0 tlsproxy
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 smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
#smtps inet n - - - - smtpd
smtps inet n - n - - smtpd -o content_filter=spamassassin
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
#628 inet n - y - - qmqpd
pickup unix n - y 60 1 pickup
cleanup unix n - y - 0 cleanup
qmgr unix n - n 300 1 qmgr
#qmgr unix n - n 300 1 oqmgr
tlsmgr unix - - y 1000? 1 tlsmgr
rewrite unix - - y - - trivial-rewrite
bounce unix - - y - 0 bounce
defer unix - - y - 0 bounce
trace unix - - y - 0 bounce
verify unix - - y - 1 verify
flush unix n - y 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - n - - smtp
relay unix - - y - - smtp
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq unix n - y - - showq
error unix - - y - - error
retry unix - - y - - error
discard unix - - y - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - y - - lmtp
anvil unix - - y - 1 anvil
scache unix - - y - 1 scache
#
# ====================================================================
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# Many of the following services use the Postfix pipe(8) delivery
# agent. See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# ====================================================================
#
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
maildrop unix - n n - - pipe
flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
#
# ====================================================================
#
# Recent Cyrus versions can use the existing "lmtp" master.cf entry.
#
# Specify in cyrus.conf:
# lmtp cmd="lmtpd -a" listen="localhost:lmtp" proto=tcp4
#
# Specify in main.cf one or more of the following:
# mailbox_transport = lmtp:inet:localhost
# virtual_transport = lmtp:inet:localhost
#
# ====================================================================
#
# Cyrus 2.1.5 (Amos Gouaux)
# Also specify in main.cf: cyrus_destination_recipient_limit=1
#
#cyrus unix - n n - - pipe
# user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
#
# ====================================================================
# Old example of delivery via Cyrus.
#
#old-cyrus unix - n n - - pipe
# flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
#
# ====================================================================
#
# See the Postfix UUCP_README file for configuration details.
#
uucp unix - n n - - pipe
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
#
# Other external delivery methods.
#
ifmail unix - n n - - pipe
flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp unix - n n - - pipe
flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix - n n - 2 pipe
flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman unix - n n - - pipe
flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
${nexthop} ${user}
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/dovecot-lda -f ${sender} -d ${recipient}
spamassassin unix - n n - - pipe flags=R user=debian-spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
Pour le main.cf
A part la ligne inet_protocols, moi j'ai:
inet_protocols = ipv4
Pour le master.cf
Chez moi les lignes:
-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
sont toutes commentés
Postfix Admin Setup Checker
Error: Smarty template compile directory templates_c is not writable.
Please make it writable.
If you are using SELinux or AppArmor, you might need to adjust their setup to allow write access.
Depends on: MySQL 4.1 - OK
(change the database_type to 'mysqli' in config.inc.php if you want to use MySQL)
Error: Can't connect to database
Please edit the $CONF['database_*'] parameters in config.inc.php.
DEBUG INFORMATION:
MySQL 3.x / 4.0 functions not available! (php5-mysql installed?)
database_type = 'mysql' in config.inc.php, are you using a different database?
Bonjour, merci pour ce tuto... juste un truc qui m'a bloqué un moment :
quand on crée mailuser avec son password (azerty dans l'exemple) ne pas créer de password avec un '#' dedans !
car ça bloque
"Warning: Configuration file /etc/dovecot/dovecot-sql.conf.ext line 144: Ambiguous '#' character in line"
Merci pour l'info !
J'ai ajouté la précision au tuto.
cdlt
Bonjour,
Je ne reçois pas les emails et lors de l'envoie j'ai ceci : Erreur serveur : '454 4.7.1 <**********@free.fr>: Relay access denied'
Mais j'arrive bien à me connecté pourtant via outlook :(
Bonjour,
qu'avez vous à la ligne "mydestination" du fichier "/etc/postfix/main.cf" ?
essayez ceci:
mydestination = localhost.info, localhost votre_domain.com
cdlt
Bonjour,
Alors du coup j'ai cherché j'ai trouvé ça venait de mon main.cf du postfix que j'ai édité avant votre réponse mais petit soucis je n'arrive pas à envoyer de mail aux adresses free.fr comment faire ? Car gmail ça marche et j'arrive à recevoir de free par exemple
Désolé du double poste mais pour dire aussi que ça vient de outlook qui n'a pas le protocole StartTls dans son soft ^^
Et au passage dans /etc/dovecot/conf.d/20-lmtp.conf à quoi correspond votre email ? "admin@example.com" admin est un user soit je dois mettre tout mes users ou un alias ?
Bonjour,
J'ai suivi ton tuto pour installer et configurer postfix et postfixadmin et je me retrouve coincé lors de la création de mon premier domaine. PostfixAdmin me dit "Domaine invalide plaquestick.com, et/ou non resolvable via les DNS".
J'ai correctement appliquer le changement dans ma zone DNS en faisant pointer le MX records vers mon serveur.
Est-ce que le fait de déclarer le même nom de domaine que le domaine de la machine peut avoir un impact, car cela marque avec plein d'autre domaines ? Postfix effectue des vérifications lors de l'ajout du nom de domaine?
Merci de ton aide.
Bonjour,
qu'avez vous dans le fichier /etc/resolv.conf ?
Bonjour,
J'ai les lignes suivantes dans /etc/resolv.conf
nameserver 213.246.33.144
nameserver 213.246.36.14
nameserver 80.93.83.11
nameserver 80.93.83.25
Ce fichier sert à quoi ? C'est la première fois que je monte un serveur mail alors je patauge un peu sur certains points.
Cordialement
Ce fichier sert à déterminer quels serveurs DNS il faut utiliser pour votre serveur. (dans votre cas il semble bon)
J'essaie de comprendre votre erreur, mais il est vrai qu'installer son serveur d'email n'est pas evident et moi aussi je me suis casser les dents de nombreuses fois.
Grâce à ce tuto (qui vient de chez tictech à la base) j'y arrive à chaque fois. ^^
Je cherche ce qui peut clocher, je vous répondrais dés que j'ai une piste.
Aussi quel est le hostname (taper "hostname" dans une invite de commande), normalement chez vous cela devrait etre plaquestick.com.
Pas sure que cela soit ça mais c'est mieux si le nom du serveur correspond au ndd.
cdlt
Qu'avez vous dans le fichier /etc/postfix/main.cf à la ligne "mydestination" ?
Essayez de mettre :
mydestination = localhost.info, localhost
cdlt
J'ai changé la ligne mydestination mais rien de change. J'ai redémarré le service postfix après mais rien du tout.
mon hostname est frhb18270ds en tapant hostsname sur mon serveur
J'ai tout reconfiguré 2 fois déja.
Tout se déroule normalement sauf pour renseigne le premier domaine en sachant que pour d'autres ça marche.
Et quand je teste mon domaine dans mxlookUP il ne me sort pas d'erreurs.
Je ne comprends vraiment pas.
Mon serveur est un serveur dédié chez Ikoula et eux me disent que la configuration de leur coté est bonne. Je vais tombé dingue.
En tout cas merci pour votre temps
OK.
1 essayer (a "mydestination)
frhb18270ds localhost.plaquestick.com localhost plaquestick.com
Redemarrage des services
test
2 reboot du serveur (si vous pouvez).
Si toujours pas, qu'il y a t'il dans
/var/log/mail.log
/var/log/mail.warn
/var/log/mail.err
cdlt
rien dans les logs.
redemarrage serveur: pas de changements
changement mydestination: pas de changements
Je desespere.
cdlt
hum ..
J'avoue que pour ce soir je suis à cour d'idées également.^^
Vous est il possible de changer le nom du serveur ?
cdlt
C'est bon ca marche,
J'ai juste changé mon hostname par mail.plaquestick.com.
Je ne sais pas exactement si c'est ça mais bon ça fonctionne.
En tout cas un grand merci pour votre aide et votre temps.
cdlt
Super !
J'ai l'intime conviction que c'était ça ^^.
Bien cordialement et bonne continuation.
Bonjour, j'ai suivi ton tuto (qui au passage, est franchement bien écrit) avec attention.
Mon premier problème (je sais pas si cela en est vraiment un), lorsque je tente de me connecter avec ThunderBird avec les paramètres que tu as indiqué dans ton tuto, il m'est impossible de relever les nouveaux mails, alors qu'avec RoundCube j'arrive à voir les mails entrants.
Mon deuxième problème est que je n'arrive pas à envoyer de mail depuis RoundCube. Lorsque j'essaye d'envoyer un message, erreur: "Erreur SMTP (250) : échec lors de l'authentification." Je ne sais pas si le problème bien de la config du serveur mail ou de roundcube.
/var/log/mail.log :
Jul 26 19:52:44 vps619687 postfix/smtpd[17034]: connect from localhost[127.0.0.1]
Jul 26 19:52:44 vps619687 postfix/smtpd[17034]: disconnect from localhost[127.0.0.1]
Logs de roundcube :
[26-Jul-2019 19:52:44 Europe/Berlin] ERROR: SMTP server does not support authentication ()
[26-Jul-2019 19:52:44 +0200]: <2ap24qvd> SMTP Error: Authentication failure: SMTP server does not support authentication (Code: ) in /var/www/html/roundcube/program/lib/Roundcube/rcube.php on line 1665 (POST /?_task=mail&_unlock=loading1564163566279&_lang=fr_FR&_framed=1&_action=send)
Cependant la config de roundcube me laissais perplexe:
// For example %n = mail.domain.tld, %t = domain.tld
$config['smtp_server'] = 'localhost';
// SMTP port (default is 25; use 587 for STARTTLS or 465 for the
// deprecated SSL over SMTP (aka SMTPS))
$config['smtp_port'] = 25;
// SMTP username (if required) if you use %u as the username Roundcube
// will use the current username for login
$config['smtp_user'] = '';
// SMTP password (if required) if you use %p as the password Roundcube
// will use the current user's password for login
$config['smtp_pass'] = '';
// SMTP AUTH type (DIGEST-MD5, CRAM-MD5, LOGIN, PLAIN or empty to use
// best server supported one)
$config['smtp_auth_type'] = '';
Donc je l'ai modifié pour :
$config['smtp_server'] = 'localhost';
$config['smtp_port'] = 587;
$config['smtp_user'] = '%u';
$config['smtp_pass'] = '%p';
$config['smtp_auth_type'] = 'LOGIN';
J'ai toujours les même messages
Troisième problème de temps à autre je reçois ces lignes dans /var/log/mail.log:
connect from unknown[193.169.252.140]
Jul 26 20:29:19 vps619687 postfix/smtpd[17667]: lost connection after AUTH from unknown[193.169.252.140]
Jul 26 20:29:19 vps619687 postfix/smtpd[17667]: disconnect from unknown[193.169.252.140]
Je ne sais pas à qui appartient cette ip: 193.169.252.140 elle est localisé en Pologne apparemment :|
Ce problème, n'a (je crois) rien a voir avec ton tuto, mais j'aimerais avoir quelques avis avant que de régler les problèmes d'envois de mail. J'ai pas envie qu'un malins spam de mail avec mon serveur
Voila, je sais pas si tu pourras m'aider :) en tous cas merci pour ce tuto et merci de m'avoir lu :D
Bonne journée/soirée.
Léo