Postfix+dovecot+thunderbird authentification sasl

Bonjour à tous,

J’ai un serveur postfix/dovecot installé sur un debian 9 qui fonctionne correctement tant que je relève mes mails depuis mon domicile.

Mais quand je voyage, je ne peux plus me conecter avec des messages du type:

Jun  2 11:03:08 ksxxxxxx auth: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=me@webologix.com rhost=188.79.222.48 

Dans main.cf, j’ai :

smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

J’en déduis que le permit_sasl_authenticated n’est pas vérifié.

Comment puis-je vérifier que postfix est bien configuré pour accepter les authentification SASL et comment le paramétrer dans Thunderbird ?

J’ai cherché des tuto sur le sujet mais n’ai trouvé que des docs antérieurs à 2010 qui indiquent des librairies aujourd’hui obsolètes, ce qui m’a fait solliciter votre aide ici

Bonjour,

dovecot et postfix ne sont pas la même chose. L’entrée de journal que tu nous montre est de la part de pam pour dovecot et la ligne de configuration est pour postfix.
Sinon, pour l’entrée de journal, il semble que pam refuse la connexion en tant que l’utilisateur me@weblogix.com, cet utilisateur existe-t-il bien dans la base pam ? As-tu saisi le bon mot de passe ?

Bonjour

Pour info :

Depuis le 6 juillet 2020, il n’y a plus aucune mise à jour de sécurité de debian 9 (buster)

En configurant le client (thunderbird) en

STARTTLS
Normal password

et en mettant ma nouvelle IP dans main.cf:mynetworks ça refonctionne.

Comment configurer pour que toute la conf soit encryptée, mots de passe y compris et sans avoir à ajouter ma nouvelle IP dans main.cf:mynetworks ?

J’ai essayé dovecot.conf avec (d’après SSL — Dovecot documentation):

disable_plaintext_auth = yes
ssl=required

avec thunderbird configuré

STARTTLS
Kerberos / GSSAPI

Thunderbird affiche l’erreur:

"The imap server does not support the authentication method..."

Le main.cf:

...
smtp_tls_security_level = may
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_protocols = !SSLv2,!SSLv3
smtp_tls_protocols = !SSLv2,!SSLv3
smtpd_tls_exclude_ciphers = RC4, aNULL
smtp_tls_exclude_ciphers = RC4, aNULL
dovecot_destination_recipient_limit = 1
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
#content_filter = amavis:[127.0.0.1]:10024
#receive_override_options = no_address_mappings
smtp_tls_loglevel = 1
tls_ssl_options = NO_COMPRESSION
smtpd_tls_mandatory_ciphers = high
tls_high_cipherlist = EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
smtpd_tls_mandatory_exclude_ciphers = aNULL, eNULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CDC3-SHA, KRB5-DE5, CBC3-SHA
smtpd_tls_dh1024_param_file = /opt/Certbot/certbot/ssl-dhparams.pem

avec thunderbird configuré

STARTTLS
normal password

Lorsque j’envois un mail il passe et je le reçois mais le message « authentication failure » apparait et au bout de 3 fois fail2ban bannit l’IP. Il faut débanir l’ip pour pouvoir ré-accéder aux mails

avec thunderbird configuré

SSL/TLS
normal password

Thunderbird répond que le serveur ne connait pas ce protocol et rien ne passe

Vu le succès que remporte ce post, je fais une dernière tentative pour obtenir de l’aide sur ce forum pour réussir à recevoir ses mails en voyage.
J’ai essayé de lire tout un tas de discussions sur le sujet, ainsi que les docs de postfix comme Postfix SASL Howto. J’avoue ne pas réussir à suivre cet amas de configurations alambiquées qui ne cessent de se compliquer avec le temps des pirateurs en tout genre. Je ne suis pas un administrateur rézo, juste un utilisateur zéro qui veut défendre le droit d’avoir son propre serveur de mails sans tomber dans la coupe de gmail et consoeurs ni devenir un ponte de l’administration de serveurs.
Si quelqu’un veut me donner une conf qui marche, c’est bien venu.
Sinon, voici la mienne ci-jointe, au cas où quelqu’un de compétent voudrait se pencher dessus et faire profiter de son savoir à ceux qui comme moi déclarent forfait
conf_mail_2022-jun.txt (12,2 Ko)

Pour rappel ma conf marche très bien tant que je ne voyage pas, mais dès que je change d’IP j’obtiens le message:

auth: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=inf@xdomain.com rhost=my.travel.new.ip

Ma conf thunderbird est :

STARTTLS
normal password
lsb_release -a            
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 11 (bullseye)
Release:        11
Codename:       bullseye

Bonjour,

L’utilisateur qui tente la connexion est-il un utilisateur virtuel (en base de données) ou un utilisateur système ?
L’authentification échoue en vérifiant sur un utilisateur système (pam_unix). Évidement tu peux envoyer des courriels si tu mets ton IP dans mynetworks Ce qui estdangereux puisque toutes les IP présentes sont autorisées à envoyer des courriels vers n’importe quelle destination sans authentification.

Un utilisateur virtuel défini dans mysql

J’ai retiré mon IP de mynetworks et revu qq paramètres. Je peux toujours envoyer/recevoir des mails depuis mon domicile.

En déplacement j’obtiens:

Réseaux mobiles depuis un tél je peux lire mes mails mais pas en envoyer

Depuis un café, IP 188.79.222.48

 > rgrep 188.79.222.48 /var/log/
/var/log/syslog:Jun 28 12:01:07 ks307144 dovecot: imap-login: Disconnected (no auth attempts in 0 secs): user=<>, rip=188.79.222.48, lip=94.23.227.123, TLS handshaking: SSL_accept() failed: error:14094412:SSL routines:ssl3_read_bytes:sslv3 alert bad certificate: SSL alert number 42, session=<fZl+HX/idJK8T94w>
/var/log/syslog:Jun 28 12:01:16 ks307144 dovecot: imap-login: Disconnected (no auth attempts in 0 secs): user=<>, rip=188.79.222.48, lip=94.23.227.123, TLS handshaking: SSL_accept() failed: error:14094412:SSL routines:ssl3_read_bytes:sslv3 alert bad certificate: SSL alert number 42, session=<iAATHn/imJK8T94w>
/var/log/syslog:Jun 28 12:01:18 ks307144 dovecot: imap-login: Login: user=<inf@webologix.com>, method=PLAIN, rip=188.79.222.48, lip=94.23.227.123, mpid=2973557, TLS, session=<mb8PHn/impK8T94w>
/var/log/syslog:Jun 28 12:01:18 ks307144 dovecot: imap-login: Login: user=<kmc@webologix.com>, method=PLAIN, rip=188.79.222.48, lip=94.23.227.123, mpid=2973559, TLS, session=<XjYQHn/inJK8T94w>
/var/log/syslog:Jun 28 12:02:57 ks307144 postfix/submission/smtpd[2973685]: connect from 48.222.79.188.dynamic.jazztel.es[188.79.222.48]
/var/log/syslog:Jun 28 12:02:57 ks307144 postfix/submission/smtpd[2973685]: Anonymous TLS connection established from 48.222.79.188.dynamic.jazztel.es[188.79.222.48]: TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)
/var/log/syslog:Jun 28 12:06:09 ks307144 dovecot: imap-login: Disconnected (no auth attempts in 0 secs): user=<>, rip=188.79.222.48, lip=94.23.227.123, TLS handshaking: SSL_accept() failed: error:14094412:SSL routines:ssl3_read_bytes:sslv3 alert bad certificate: SSL alert number 42, session=<d/uHL3/i7pK8T94w>
/var/log/syslog:Jun 28 12:06:55 ks307144 postfix/submission/smtpd[2973916]: connect from 48.222.79.188.dynamic.jazztel.es[188.79.222.48]
/var/log/syslog:Jun 28 12:06:55 ks307144 postfix/submission/smtpd[2973916]: Anonymous TLS connection established from 48.222.79.188.dynamic.jazztel.es[188.79.222.48]: TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)
/var/log/syslog:Jun 28 12:06:58 ks307144 postfix/submission/smtpd[2973916]: 744F44B00D36: client=48.222.79.188.dynamic.jazztel.es[188.79.222.48], sasl_method=PLAIN, sasl_username=inf@webologix.com
/var/log/syslog:Jun 28 12:06:58 ks307144 postfix/submission/smtpd[2973916]: disconnect from 48.222.79.188.dynamic.jazztel.es[188.79.222.48] ehlo=2 starttls=1 auth=1 mail=1 rcpt=1 data=1 quit=1 commands=8
/var/log/syslog:Jun 28 12:07:59 ks307144 postfix/submission/smtpd[2973685]: timeout after AUTH from 48.222.79.188.dynamic.jazztel.es[188.79.222.48]
/var/log/syslog:Jun 28 12:07:59 ks307144 postfix/submission/smtpd[2973685]: disconnect from 48.222.79.188.dynamic.jazztel.es[188.79.222.48] ehlo=2 starttls=1 auth=1 commands=4
/var/log/syslog:Jun 28 12:08:01 ks307144 postfix/submission/smtpd[2973916]: connect from 48.222.79.188.dynamic.jazztel.es[188.79.222.48]
/var/log/syslog:Jun 28 12:08:01 ks307144 postfix/submission/smtpd[2973916]: Anonymous TLS connection established from 48.222.79.188.dynamic.jazztel.es[188.79.222.48]: TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)
/var/log/syslog:Jun 28 12:08:04 ks307144 postfix/submission/smtpd[2973916]: 2154A4B00D36: client=48.222.79.188.dynamic.jazztel.es[188.79.222.48], sasl_method=PLAIN, sasl_username=inf@webologix.com
/var/log/syslog:Jun 28 12:08:04 ks307144 postfix/submission/smtpd[2973916]: disconnect from 48.222.79.188.dynamic.jazztel.es[188.79.222.48] ehlo=2 starttls=1 auth=1 mail=1 rcpt=1 data=1 quit=1 commands=8
/var/log/syslog:Jun 28 12:09:22 ks307144 dovecot: imap-login: Disconnected (no auth attempts in 0 secs): user=<>, rip=188.79.222.48, lip=94.23.227.123, TLS, session=<izQEO3/iGpO8T94w>
/var/log/syslog:Jun 28 12:10:13 ks307144 dovecot: imap-login: Login: user=<kmc@webologix.com>, method=PLAIN, rip=188.79.222.48, lip=94.23.227.123, mpid=2974685, TLS, session=<shnmPX/iJJO8T94w>
/var/log/syslog:Jun 28 12:14:33 ks307144 postfix/anvil[2971268]: statistics: max connection count 2 for (submission:188.79.222.48) at Jun 28 12:06:55
/var/log/syslog:Jun 28 12:14:33 ks307144 postfix/anvil[2971268]: statistics: max message rate 1/60s for (submission:188.79.222.48) at Jun 28 12:06:58
/var/log/fail2ban.log.1:2022-06-25 17:42:07,041 fail2ban.filter         [9290]: INFO    [pam-generic] Found 188.79.222.48 - 2022-06-25 17:42:06
/var/log/fail2ban.log.1:2022-06-25 17:42:09,046 fail2ban.filter         [9290]: INFO    [pam-generic] Found 188.79.222.48 - 2022-06-25 17:42:09
/var/log/fail2ban.log.1:2022-06-25 17:42:09,648 fail2ban.filter         [9290]: INFO    [pam-generic] Found 188.79.222.48 - 2022-06-25 17:42:09
/var/log/fail2ban.log.1:2022-06-25 17:42:09,809 fail2ban.actions        [9290]: NOTICE  [pam-generic] Ban 188.79.222.48
/var/log/fail2ban.log.1:2022-06-25 17:42:09,854 fail2ban.filter         [9290]: INFO    [recidive] Found 188.79.222.48 - 2022-06-25 17:42:09
/var/log/fail2ban.log.1:2022-06-25 18:42:09,348 fail2ban.actions        [9290]: NOTICE  [pam-generic] Unban 188.79.222.48
grep: /var/log/wtmp: binary file matches
/var/log/fail2ban.log:2022-06-28 12:01:16,736 fail2ban.filter         [9290]: INFO    [pam-generic] Found 188.79.222.48 - 2022-06-28 12:01:16
/var/log/fail2ban.log:2022-06-28 12:01:16,737 fail2ban.filter         [9290]: INFO    [pam-generic] Found 188.79.222.48 - 2022-06-28 12:01:16
/var/log/fail2ban.log:2022-06-28 12:02:58,095 fail2ban.filter         [9290]: INFO    [pam-generic] Found 188.79.222.48 - 2022-06-28 12:02:57
/var/log/fail2ban.log:2022-06-28 12:02:58,640 fail2ban.actions        [9290]: NOTICE  [pam-generic] Ban 188.79.222.48
/var/log/fail2ban.log:2022-06-28 12:02:58,784 fail2ban.filter         [9290]: INFO    [recidive] Found 188.79.222.48 - 2022-06-28 12:02:58
/var/log/fail2ban.log:2022-06-28 12:05:38,288 fail2ban.actions        [9290]: NOTICE  [pam-generic] Unban 188.79.222.48
/var/log/fail2ban.log:2022-06-28 12:06:56,230 fail2ban.filter         [9290]: INFO    [pam-generic] Found 188.79.222.48 - 2022-06-28 12:06:55
/var/log/fail2ban.log:2022-06-28 12:08:01,928 fail2ban.filter         [9290]: INFO    [pam-generic] Found 188.79.222.48 - 2022-06-28 12:08:01
/var/log/fail2ban.log:2022-06-28 12:10:10,924 fail2ban.filter         [9290]: INFO    [pam-generic] Found 188.79.222.48 - 2022-06-28 12:10:10
/var/log/fail2ban.log:2022-06-28 12:10:11,214 fail2ban.actions        [9290]: NOTICE  [pam-generic] Ban 188.79.222.48
/var/log/fail2ban.log:2022-06-28 12:10:11,386 fail2ban.filter         [9290]: INFO    [recidive] Found 188.79.222.48 - 2022-06-28 12:10:11
/var/log/fail2ban.log:2022-06-28 12:15:08,700 fail2ban.actions        [9290]: NOTICE  [pam-generic] Unban 188.79.222.48
/var/log/auth.log.1:Jun 25 17:42:06 ks307144 auth: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=inf@webologix.com rhost=188.79.222.48 
/var/log/auth.log.1:Jun 25 17:42:09 ks307144 auth: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=inf@webologix.com rhost=188.79.222.48 
/var/log/auth.log.1:Jun 25 17:42:09 ks307144 auth: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=inf@webologix.com rhost=188.79.222.48 
/var/log/mail.log.1:Jun 25 17:42:08 ks307144 dovecot: imap-login: Login: user=<inf@webologix.com>, method=PLAIN, rip=188.79.222.48, lip=94.23.227.123, mpid=2640953, TLS, session=<nvp0h0fiipm8T94w>
/var/log/mail.log.1:Jun 25 17:42:11 ks307144 dovecot: imap-login: Login: user=<inf@webologix.com>, method=PLAIN, rip=188.79.222.48, lip=94.23.227.123, mpid=2640965, TLS, session=<3iOYh0fiqJm8T94w>
/var/log/mail.log.1:Jun 25 17:42:11 ks307144 dovecot: imap-login: Login: user=<inf@webologix.com>, method=PLAIN, rip=188.79.222.48, lip=94.23.227.123, mpid=2640967, TLS, session=<kGech0fiqpm8T94w>
/var/log/mail.log:Jun 28 12:01:07 ks307144 dovecot: imap-login: Disconnected (no auth attempts in 0 secs): user=<>, rip=188.79.222.48, lip=94.23.227.123, TLS handshaking: SSL_accept() failed: error:14094412:SSL routines:ssl3_read_bytes:sslv3 alert bad certificate: SSL alert number 42, session=<fZl+HX/idJK8T94w>
/var/log/mail.log:Jun 28 12:01:16 ks307144 dovecot: imap-login: Disconnected (no auth attempts in 0 secs): user=<>, rip=188.79.222.48, lip=94.23.227.123, TLS handshaking: SSL_accept() failed: error:14094412:SSL routines:ssl3_read_bytes:sslv3 alert bad certificate: SSL alert number 42, session=<iAATHn/imJK8T94w>
/var/log/mail.log:Jun 28 12:01:18 ks307144 dovecot: imap-login: Login: user=<inf@webologix.com>, method=PLAIN, rip=188.79.222.48, lip=94.23.227.123, mpid=2973557, TLS, session=<mb8PHn/impK8T94w>
/var/log/mail.log:Jun 28 12:01:18 ks307144 dovecot: imap-login: Login: user=<kmc@webologix.com>, method=PLAIN, rip=188.79.222.48, lip=94.23.227.123, mpid=2973559, TLS, session=<XjYQHn/inJK8T94w>
/var/log/mail.log:Jun 28 12:02:57 ks307144 postfix/submission/smtpd[2973685]: connect from 48.222.79.188.dynamic.jazztel.es[188.79.222.48]
/var/log/mail.log:Jun 28 12:02:57 ks307144 postfix/submission/smtpd[2973685]: Anonymous TLS connection established from 48.222.79.188.dynamic.jazztel.es[188.79.222.48]: TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)
/var/log/mail.log:Jun 28 12:06:09 ks307144 dovecot: imap-login: Disconnected (no auth attempts in 0 secs): user=<>, rip=188.79.222.48, lip=94.23.227.123, TLS handshaking: SSL_accept() failed: error:14094412:SSL routines:ssl3_read_bytes:sslv3 alert bad certificate: SSL alert number 42, session=<d/uHL3/i7pK8T94w>
/var/log/mail.log:Jun 28 12:06:55 ks307144 postfix/submission/smtpd[2973916]: connect from 48.222.79.188.dynamic.jazztel.es[188.79.222.48]
/var/log/mail.log:Jun 28 12:06:55 ks307144 postfix/submission/smtpd[2973916]: Anonymous TLS connection established from 48.222.79.188.dynamic.jazztel.es[188.79.222.48]: TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)
/var/log/mail.log:Jun 28 12:06:58 ks307144 postfix/submission/smtpd[2973916]: 744F44B00D36: client=48.222.79.188.dynamic.jazztel.es[188.79.222.48], sasl_method=PLAIN, sasl_username=inf@webologix.com
/var/log/mail.log:Jun 28 12:06:58 ks307144 postfix/submission/smtpd[2973916]: disconnect from 48.222.79.188.dynamic.jazztel.es[188.79.222.48] ehlo=2 starttls=1 auth=1 mail=1 rcpt=1 data=1 quit=1 commands=8
/var/log/mail.log:Jun 28 12:07:59 ks307144 postfix/submission/smtpd[2973685]: timeout after AUTH from 48.222.79.188.dynamic.jazztel.es[188.79.222.48]
/var/log/mail.log:Jun 28 12:07:59 ks307144 postfix/submission/smtpd[2973685]: disconnect from 48.222.79.188.dynamic.jazztel.es[188.79.222.48] ehlo=2 starttls=1 auth=1 commands=4
/var/log/mail.log:Jun 28 12:08:01 ks307144 postfix/submission/smtpd[2973916]: connect from 48.222.79.188.dynamic.jazztel.es[188.79.222.48]
/var/log/mail.log:Jun 28 12:08:01 ks307144 postfix/submission/smtpd[2973916]: Anonymous TLS connection established from 48.222.79.188.dynamic.jazztel.es[188.79.222.48]: TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)
/var/log/mail.log:Jun 28 12:08:04 ks307144 postfix/submission/smtpd[2973916]: 2154A4B00D36: client=48.222.79.188.dynamic.jazztel.es[188.79.222.48], sasl_method=PLAIN, sasl_username=inf@webologix.com
/var/log/mail.log:Jun 28 12:08:04 ks307144 postfix/submission/smtpd[2973916]: disconnect from 48.222.79.188.dynamic.jazztel.es[188.79.222.48] ehlo=2 starttls=1 auth=1 mail=1 rcpt=1 data=1 quit=1 commands=8
/var/log/mail.log:Jun 28 12:09:22 ks307144 dovecot: imap-login: Disconnected (no auth attempts in 0 secs): user=<>, rip=188.79.222.48, lip=94.23.227.123, TLS, session=<izQEO3/iGpO8T94w>
/var/log/mail.log:Jun 28 12:10:13 ks307144 dovecot: imap-login: Login: user=<kmc@webologix.com>, method=PLAIN, rip=188.79.222.48, lip=94.23.227.123, mpid=2974685, TLS, session=<shnmPX/iJJO8T94w>
/var/log/mail.log:Jun 28 12:14:33 ks307144 postfix/anvil[2971268]: statistics: max connection count 2 for (submission:188.79.222.48) at Jun 28 12:06:55
/var/log/mail.log:Jun 28 12:14:33 ks307144 postfix/anvil[2971268]: statistics: max message rate 1/60s for (submission:188.79.222.48) at Jun 28 12:06:58
/var/log/syslog.1:Jun 25 17:42:08 ks307144 dovecot: imap-login: Login: user=<inf@webologix.com>, method=PLAIN, rip=188.79.222.48, lip=94.23.227.123, mpid=2640953, TLS, session=<nvp0h0fiipm8T94w>
/var/log/syslog.1:Jun 25 17:42:11 ks307144 dovecot: imap-login: Login: user=<inf@webologix.com>, method=PLAIN, rip=188.79.222.48, lip=94.23.227.123, mpid=2640965, TLS, session=<3iOYh0fiqJm8T94w>
/var/log/syslog.1:Jun 25 17:42:11 ks307144 dovecot: imap-login: Login: user=<inf@webologix.com>, method=PLAIN, rip=188.79.222.48, lip=94.23.227.123, mpid=2640967, TLS, session=<kGech0fiqpm8T94w>
grep: /var/log/journal/6d31fefdee53c079ddec53e55c42f6c4/user-1002@0005e08ed2679980-5f3550676d7bd3e2.journal~: binary file matches
grep: /var/log/journal/6d31fefdee53c079ddec53e55c42f6c4/system@0005e051e80484da-fc2e407e07d89a0a.journal~: binary file matches
grep: /var/log/journal/6d31fefdee53c079ddec53e55c42f6c4/system@0005e08ec5e3d19d-fb89256bcf570eda.journal~: binary file matches

Apparemment tu as une erreur SSL lors des tentatives d’authentification en Submission (port 587). Je pense que ton client (lequel, sur quelle plate-forme ?) tente d’utiliser une version du protocole TLS inférieure à celle utilisée par Postfix, ou des algos de chiffrement interdits par la configuration de Postfix. Et comme il n’y a pas ces restrictions dans Dovecot, tu peux en toute circonstances recevoir tes courriels.
Pour vérifier, commente les lignes concernées dans ton main.cf, redémarre le service et essaie à nouveau d’envoyer un courriel.

Le client messagerie est Thunderbird 78.14.0 (64-bit) sous Debian 11

Comment savoir quels protocoles TLS ou chiffrements sont utilisés ?

Je dois chaque fois me déplacer dans un café pour faire ces tests. Y aurait-il un moyen plus systématique de repérer le problème ?

Pourquoi depuis un café ? utilise un téléphone au pire.

Mais commence par poster ici ta configuration de postfix avec la partie SSL ici même.

Cela devrait fonctionner avec Thunderbird.
Est-ce que tu as fait ceci :

D’après les logs :

Jun 28 12:02:57 ks307144 postfix/submission/smtpd[2973685]: Anonymous TLS connection established from 48.222.79.188.dynamic.jazztel.es[188.79.222.48]: TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)
Jun 28 12:06:09 ks307144 dovecot: imap-login: Disconnected (no auth attempts in 0 secs): user=<>, rip=188.79.222.48, lip=94.23.227.123, TLS handshaking: SSL_accept() failed: error:14094412:SSL routines:ssl3_read_bytes:sslv3 alert bad certificate: SSL alert number 42, session=<d/uHL3/i7pK8T94w>

Le client tennte une connexion avec TLS 1.3 et l’algo de chiffrement TLS_AES_128_GCM_SHA256 et se fait jeter avec une erreur SSL. Je suppose donc que ton serveur Postfix n’autorise pas cet algo.

Si tu veux blinder ta configuration au niveau du chiffrement (protocole et algos) utilise : https://ssl-config.mozilla.org en fonction des capacités des clients susceptibles de se connecter.

Le post 3/13 n’est pas suffisant ?

Génial ce site. En m’inspirant de la conf postfix intermediate :

smtpd_tls_security_level = may
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /path/to/signed_cert_plus_intermediates
smtpd_tls_key_file = /path/to/private_key
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_mandatory_ciphers = medium

# curl https://ssl-config.mozilla.org/ffdhe2048.txt > /path/to/dhparam
# not actually 1024 bits, this applies to all DHE >= 1024 bits
smtpd_tls_dh1024_param_file = /path/to/dhparam

tls_medium_cipherlist = ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
tls_preempt_cipherlist = no

Ça semble avoir évolué. Dans les logs on voit que le connexion TlS fonctionne mais l’authentication failure subsiste à chaque tentative de conexion smtp:

==> /var/log/fail2ban.log <==
2022-06-29 17:36:59,818 fail2ban.filter         [9290]: INFO    [sshd] Found 194.44.152.76 - 2022-06-29 17:36:59
2022-06-29 17:36:59,911 fail2ban.filter         [9290]: INFO    [pam-generic] Found 194.44.152.76 - 2022-06-29 17:36:59

==> /var/log/mail.log <==
Jun 29 17:37:00 ks307144 postfix/submission/smtpd[3120933]: connect from 48.222.79.188.dynamic.jazztel.es[188.79.222.48]
Jun 29 17:37:00 ks307144 postfix/submission/smtpd[3120933]: setting up TLS connection from 48.222.79.188.dynamic.jazztel.es[188.79.222.48]
Jun 29 17:37:00 ks307144 postfix/submission/smtpd[3120933]: 48.222.79.188.dynamic.jazztel.es[188.79.222.48]: TLS cipher list "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:!RC4:!aNULL:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CDC3-SHA:!KRB5-DE5:!CBC3-SHA"
Jun 29 17:37:00 ks307144 postfix/submission/smtpd[3120933]: SSL_accept:before SSL initialization
Jun 29 17:37:00 ks307144 postfix/submission/smtpd[3120933]: SSL_accept:before SSL initialization
Jun 29 17:37:00 ks307144 postfix/submission/smtpd[3120933]: 48.222.79.188.dynamic.jazztel.es[188.79.222.48]: Decrypting session ticket, key expiration: 1656516503
Jun 29 17:37:00 ks307144 postfix/submission/smtpd[3120933]: SSL_accept:SSLv3/TLS read client hello
Jun 29 17:37:00 ks307144 postfix/submission/smtpd[3120933]: SSL_accept:SSLv3/TLS write server hello
Jun 29 17:37:00 ks307144 postfix/submission/smtpd[3120933]: SSL_accept:SSLv3/TLS write change cipher spec
Jun 29 17:37:00 ks307144 postfix/submission/smtpd[3120933]: SSL_accept:TLSv1.3 write encrypted extensions
Jun 29 17:37:00 ks307144 postfix/submission/smtpd[3120933]: SSL_accept:SSLv3/TLS write finished
Jun 29 17:37:00 ks307144 postfix/submission/smtpd[3120933]: SSL_accept:TLSv1.3 early data
Jun 29 17:37:00 ks307144 postfix/submission/smtpd[3120933]: SSL_accept:TLSv1.3 early data
Jun 29 17:37:00 ks307144 postfix/submission/smtpd[3120933]: SSL_accept:SSLv3/TLS read finished
Jun 29 17:37:00 ks307144 postfix/submission/smtpd[3120933]: 48.222.79.188.dynamic.jazztel.es[188.79.222.48]: Reusing old session (RFC 5077 session ticket)
Jun 29 17:37:00 ks307144 postfix/submission/smtpd[3120933]: Anonymous TLS connection established from 48.222.79.188.dynamic.jazztel.es[188.79.222.48]: TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)

==> /var/log/auth.log <==
Jun 29 17:37:00 ks307144 auth: pam_unix(dovecot:auth): check pass; user unknown
Jun 29 17:37:00 ks307144 auth: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=inf@webologix.com rhost=188.79.222.48 

Les mails arrivent néanmoins à destination malgré l’authentication failure ! Mais l’ip du café est bloquée par fail2ban !

De retour au domicile je constate qu’en fait l’authentication failure a lieu exactement de la même manière que depuis le café. La seule différence est que l’ip domicile n’est pas bloquée par fail2ban.

L’erreur d’authentification concerne pam_unix. Il faut examiner la configuration de Dovecot (userb, passdb) pour savoir pourquoi l’authentification PAM (utilisateurs système) est utilisés avant ou à la place de authentification via MySQL (utilisateurs virtuels).
Un copier/coller du retour de :

dovecot -n
 > dovecot -n
# 2.3.13 (89f716dc2): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.13 (cdd19fe3)
# OS: Linux 4.19.44-mod-std-ipv6-64 x86_64  
# Hostname: le.server.com
auth_mechanisms = plain login
disable_plaintext_auth = no
listen = *,[::]
log_timestamp = "%Y-%m-%d %H:%M:%S "
mail_location = mbox:~/mail:INBOX=/var/mail/%u
mail_max_userip_connections = 100
mail_privileged_group = vmail
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date index ihave duplicate mime foreverypart extracttext imapsieve vnd.dovecot.imapsieve
namespace inbox {
  inbox = yes
  location = 
  mailbox Drafts {
    special_use = \Drafts
  }
  mailbox Junk {
    special_use = \Junk
  }
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Trash {
    special_use = \Trash
  }
  prefix = 
}
passdb {
  driver = pam
}
passdb {
  args = /etc/dovecot/dovecot-sql.conf
  driver = sql
}
plugin {
  imapsieve_mailbox1_before = file:/var/mail/vmail/sieve/global/report-spam.sieve
  imapsieve_mailbox1_causes = COPY
  imapsieve_mailbox1_name = Spam
  imapsieve_mailbox2_before = file:/var/mail/vmail/sieve/global/report-ham.sieve
  imapsieve_mailbox2_causes = COPY
  imapsieve_mailbox2_from = Spam
  imapsieve_mailbox2_name = *
  quota = dict:user::file:/var/vmail/%d/%n/.quotausage
  sieve = /var/vmail/%d/%n/.sieve
  sieve_before = /var/mail/vmail/sieve/global/spam-global.sieve
  sieve_global_extensions = +vnd.dovecot.pipe
  sieve_max_redirects = 25
  sieve_pipe_bin_dir = /usr/bin
  sieve_plugins = sieve_imapsieve sieve_extprograms
}
protocols = imap pop3 lmtp sieve
service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0660
    user = postfix
  }
  unix_listener auth-userdb {
    group = vmail
    mode = 0600
    user = vmail
  }
  user = root
}
service imap-login {
  client_limit = 1000
  process_limit = 512
}
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    group = postfix
    mode = 0600
    user = postfix
  }
}
service managesieve-login {
  inet_listener sieve {
    port = 4190
  }
}
service managesieve {
  process_limit = 1024
}
service stats {
  unix_listener stats-reader {
    group = vmail
    mode = 0660
    user = vmail
  }
  unix_listener stats-writer {
    group = vmail
    mode = 0660
    user = vmail
  }
}
ssl_cert = </etc/postfix/smtpd.cert
ssl_client_ca_dir = /etc/ssl/certs
ssl_dh = # hidden, use -P to show it
ssl_key = # hidden, use -P to show it
ssl_prefer_server_ciphers = yes
userdb {
  driver = passwd
}
userdb {
  driver = prefetch
}
userdb {
  args = /etc/dovecot/dovecot-sql.conf
  driver = sql
}
protocol lmtp {
  mail_plugins = quota sieve
  postmaster_address = postmaster@le.server.com
}
protocol lda {
  mail_plugins = sieve quota
  postmaster_address = email@xxx.com
}
protocol imap {
  mail_plugins = quota imap_quota
}
protocol pop3 {
  mail_plugins = quota
  pop3_uidl_format = %08Xu%08Xv
}

Tu devrais utiliser :

disable_plaintext_auth = yes

pour éviter que le mot de passe ne soit transmis en clair en l’absence de connexion TLS.
Ensuite :

passdb {
  driver = pam
}
passdb {
  args = /etc/dovecot/dovecot-sql.conf
  driver = sql
}

Si tu n’as pas d’utilisateurs système qui doivent se connecter à dovecot tu dois supprimer la première directive (passdb { driver = pam }). Sinon tu dois inverser l’ordre des deux directives : on vérifie d’abord si l’utilisateur virtuel est dans la base MySQL.
Idem pour ces directives :

userdb {
  driver = passwd
}
userdb {
  driver = prefetch
}

à supprimer ou à placer après celle avec driver = sql.

Pour sécuriser encore tu devrais n’activer que les protocoles chiffrés imaps et pop3s, exemple :

service pop3-login {
  inet_listener pop3 {
    port = 0
  }
  inet_listener pop3s {
    port = 995
    ssl = yes
  }
}
service imap-login {
  inet_listener imap {
    port = 0
  }
  inet_listener imaps {
    port = 993
    ssl = yes
  }
}

1 J'aime

J’ai essayé de nettoyer les redondances « driver », sans toucher aux « listeners » pour le moment. Mais j’obtiens une fatal error:

 > dovecot -n                  
# 2.3.13 (89f716dc2): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.13 (cdd19fe3)
# OS: Linux 4.19.44-mod-std-ipv6-64 x86_64  
# Hostname: ks307144.kimsufi.com
auth_mechanisms = plain login
listen = *,[::]
log_timestamp = "%Y-%m-%d %H:%M:%S "
mail_location = mbox:~/mail:INBOX=/var/mail/%u
mail_max_userip_connections = 100
mail_privileged_group = vmail
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date index ihave duplicate mime foreverypart extracttext imapsieve vnd.dovecot.imapsieve
namespace inbox {
  inbox = yes
  location = 
  mailbox Drafts {
    special_use = \Drafts
  }
  mailbox Junk {
    special_use = \Junk
  }
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Trash {
    special_use = \Trash
  }
  prefix = 
}
passdb {
  args = /etc/dovecot/dovecot-sql.conf
  driver = sql
}
plugin {
  imapsieve_mailbox1_before = file:/var/mail/vmail/sieve/global/report-spam.sieve
  imapsieve_mailbox1_causes = COPY
  imapsieve_mailbox1_name = Spam
  imapsieve_mailbox2_before = file:/var/mail/vmail/sieve/global/report-ham.sieve
  imapsieve_mailbox2_causes = COPY
  imapsieve_mailbox2_from = Spam
  imapsieve_mailbox2_name = *
  quota = dict:user::file:/var/vmail/%d/%n/.quotausage
  sieve = /var/vmail/%d/%n/.sieve
  sieve_before = /var/mail/vmail/sieve/global/spam-global.sieve
  sieve_global_extensions = +vnd.dovecot.pipe
  sieve_max_redirects = 25
  sieve_pipe_bin_dir = /usr/bin
  sieve_plugins = sieve_imapsieve sieve_extprograms
}
protocols = imap pop3 lmtp sieve
service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0660
    user = postfix
  }
  unix_listener auth-userdb {
    group = vmail
    mode = 0600
    user = vmail
  }
  user = root
}
service imap-login {
  client_limit = 1000
  process_limit = 512
}
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    group = postfix
    mode = 0600
    user = postfix
  }
}
service managesieve-login {
  inet_listener sieve {
    port = 4190
  }
}
service managesieve {
  process_limit = 1024
}
service stats {
  unix_listener stats-reader {
    group = vmail
    mode = 0660
    user = vmail
  }
  unix_listener stats-writer {
    group = vmail
    mode = 0660
    user = vmail
  }
}
ssl_cert = </etc/postfix/smtpd.cert
ssl_client_ca_dir = /etc/ssl/certs
ssl_dh = # hidden, use -P to show it
ssl_key = # hidden, use -P to show it
ssl_prefer_server_ciphers = yes
userdb {
  args = /etc/dovecot/dovecot-sql.conf
  driver = sql
}
doveconf: Error: passdb is missing driver
protocol lmtp {
  mail_plugins = quota sieve
  postmaster_address = postmaster@ks307144.kimsufi.com
}
protocol lda {
  mail_plugins = sieve quota
  postmaster_address = thierychen@yahoo.fr
}
protocol imap {
  mail_plugins = quota imap_quota
}
protocol pop3 {
  mail_plugins = quota
  pop3_uidl_format = %08Xu%08Xv
}
doveconf: Fatal: Error in configuration file /etc/dovecot/dovecot.conf: passdb is missing driver

Je ne comprends pas cette fatal error, alors qu’un peu plus haut on a:

passdb {
  args = /etc/dovecot/dovecot-sql.conf
  driver = sql
}

D’ailleurs cette définition de passdb se retrouve au moins dans 2 endroits dovecot.conf et conf.d/auth-sql.conf.ext
:nerd_face:

C’est effrayant tous ces fichiers de conf redondants dans tous les coins. Comment on s’y retrouve pour savoir quelles lignes sont prises en compte et repérer les erreurs de syntaxe éventuelles ?

Oups erreur de ma part il ne faillait pas supprimer ceci :

userdb {
  driver = prefetch
}

Il y a beaucoup de directives de configuration pour Dovecot, le choix de répartir cela dans différents fichiers au nom explicite est plutôt une bonne chose.

Gagné. Plus d’erreur d’authentification PAM et les messages partent et arrivent d’où que je soie maintenant !

Merci Bruno !!! Tu m’as ôté une épine du pied que je trainais depuis longtemps!

Donc sij’ai bien suivi plusieurs procédures d’authentification partaient en même temps. Une passait et envoyait bien les messages mais l’autre plantait et faisait bloquer mon IP, sauf celle de mon domicile qui est whitelistée dans FAIL2BAN !

MACHIAVÉLIQUE ! Bravo Bruno

J’ai même enlevé les listeners IMAP et POP comme conseillé au post 16/20 et ça marche toujours. Incroyab’!