Problème avec la configuration de postfix

Salut à tous,
Tout d’abord, je plante le décor:
Cela fait plusieurs mois que je m’efforce de faire fonctionner un serveur mail (entre autres) de façon à ce que ce soit configuré au mieux, avec tous les outils et sécurités qui vont bien. Le tout à des fins d’apprentissage et aussi pour fournir à mes amis un service mail.
Jusqu’il y a très peu, tout fonctionnait relativement bien, mais j’avais remarqué quand même quelques petits problèmes liés à une mauvaise connection entre postfix et la bdd sur lequel il s’appuyait. J’avais renseigné un login avec un mot de passe contenant un # du coup ça me faisait planter certaines requêtes.
Avant ça j’arrivais très bien à envoyer des mails et les recevoir avec mon client webmail roundcube, avec mon client thunderbird, depuis mon réseau local et depuis l’extérieur. Je lisais et envoyais correctement. Mes deux autres serveurs (un dns et un www), m’envoient par mail les rapports logwatch ainsi que les alertes fail2ban via mon serveur mail local.
Or depuis que j’ai changé partout dans postfix, courier, roundcube et autre fichiers de conf relatifs sur mon serveur mail, le nom d’user et le password pour la connection à la bdd postfix contenant toutes mes relations username/mail/domaine, Je ne reçois plus rien de mes serveurs locaux et de nulle part d’ailleurs. Quand je regarde les logs sur mes autres serveurs, j’ai le message

postfix/smtp[24446]: connect to 192.168.1.21[192.168.1.21]:25: Connection refused

Je sais que j’ai dû mal configurer un paramètre mais j’ai du mal à trouver lequel.
Pourriez-vous m’indiquer de quel côté chercher svp?
voici ce que me donne postconf:

alias_database = hash:/etc/postfix/virtuals
alias_maps = hash:/etc/postfix/virtuals
append_dot_mydomain = no
biff = no
broken_sasl_auth_clients = yes
command_directory = /usr/sbin
config_directory = /etc/postfix
content_filter = amavis:[127.0.0.1]:10024
daemon_directory = /usr/lib/postfix
home_mailbox = Maildir/
inet_interfaces = $myhostname, localhost
inet_protocols = all
local_recipient_maps = $virtual_mailbox_maps
mail_name = Postfix
mail_owner = postfix
mail_spool_directory = /var/spool/mail
mail_version = Postfix
mailbox_size_limit = 100000000
masquerade_domains = $mydomain
mydestination = $myhostname localhost.$mydomain localhost $mydomain
mydomain = mondomaine.com
myhostname = mail.mondomaine.com
mynetworks = 192.168.1.0/24 127.0.0.0/8 [::1]/128 [2a01:cb1d:81ef:6300::]/56
myorigin = $mydomain
proxy_read_maps = $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $virtual_mailbox_limit_maps $transport_maps $local_recipient_maps $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $mynetworks
queue_directory = /var/spool/postfix
receive_override_options = no_address_mappings
recipient_delimiter = +
relayhost = smtp.orange.fr:25
smtp_sasl_password_maps = hash:/etc/postfix/test/sasl_client
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name $mail_version
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination permit_inet_interfaces permit_mx_backup
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_sender_restrictions = permit_sasl_authenticated reject_unauth_pipelining permit_mynetworks reject_unauth_destination reject_unknown_sender_domain reject_non_fqdn_sender
smtpd_tls_cert_file = /etc/postfix/ssl/postfix-cert.pem
smtpd_tls_key_file = /etc/postfix/ssl/postfix-key.pem
smtpd_tls_loglevel = 1
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
transport_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_transports.cf
virtual_alias_domains = proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf
virtual_alias_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
virtual_gid_maps = static:5000
virtual_mailbox_base = /vmailboxes
virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf
virtual_mailbox_limit_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
virtual_uid_maps = static:5000

Bonjour @arthanyx,

Est-il possible d’avoir un log plus verbeux ? Augmenter la verbosité ?

Comme r2mi, un peu plus de log, surtout du coté du serveur aiderais

C’est 2 lignes c’est normal ? avec juste un «d» de différence

smtp_tls_session_cache_database
[…]
smtpd_tls_session_cache_database

Sinon je voie cette ligne qui me parait étrange aussi, «/test/»
smtp_sasl_password_maps = hash:/etc/postfix/test/sasl_client

Tu as bien redémarré ton serveur je suppose.

Salut,
tout d’abord merci de prendre du temps pour essayer de m’aider.
Je veux bien mettre des logs, mais je n’en ai pas. Lorsque je m’envoie un mail avec un compte externe, je n’ai rien dans les logs du serveur (/var/log/mail.log). Juste le retour de mail au bout que quelques heures/jours de mon fournisseur de mail émetteur me disant qu’il est impossible de distribuer le mail.
Lorsque j’envoie un mail avec mon serveur web par exemple (une autre vm de mon réseau local) dans les logs j’ai le message que j’ai posté plus haut. En voici la version plus verbeuse:

Aug  1 18:00:04 www postfix/pickup[3916]: 0E9312757: uid=0 from=<root>
Aug  1 18:00:04 www postfix/cleanup[8165]: 0E9312757: message-id=<20180801160004.0E9312757@www.mondomaine.com>
Aug  1 18:00:04 www postfix/qmgr[2063]: 0E9312757: from=<root@mondomaine.com>, size=315, nrcpt=1 (queue active)
Aug  1 18:00:04 www postfix/smtp[8167]: connect to 192.168.1.21[192.168.1.21]:25: Connection refused
Aug  1 18:00:04 www postfix/smtp[8167]: 0E9312757: to=<arthanyx@mondomaine.com>, relay=none, delay=0.07, delays=0.05/0.02/0/0, dsn=4.4.1, status=deferred (connect to 192.168.1.21[192.168.1.21]:25: Connection refused

Et au même moment côté serveur il n’y a rien dans mail.log …

Concernant la ligne avec /test/ c’est juste un copier coller entre deux tests, la véritable ligne est:

smtp_sasl_password_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf

Sinon concernant smtp_tls_session je n’avais pas vu le doublon et je ne sais pas du coup si c’est vraiment normal ou si c’est un morceau d’ancienne config que j’ai oublié de retirer, du coup je ne sais pas lequel choisir.
A part ça, mon master.cf part sur la base:

smtp inet n             -       -       -       4       smtpd -v

Comme on voit, j’ai activé le mode verbeux

Salut,

  1. Vérifier que tous les services liés au mail sont bien activés (postfix, mysql, etc…).
  2. Vérifier que le port 25 de ton serveur mail est bien ouvert.
  3. As-tu bien mis à jour les fichiers de connexion à la base de données par postfix?
  4. Je te recommande de te connecter avec telnet sur le port 25 de ton serveur et d’envoyer toi même le mail en console pour voir à quel moment ça coince. Voir ici par exemple:
    http://blog.kewix.fr/index.php/post/2009/01/12/Tester-un-serveur-SMTP-avec-telnet-tout-simplement

bonne chance

Salut Baruch,
1-

 /etc/init.d/postfix status

 postfix.service - LSB: Postfix Mail Transport Agent
   Loaded: loaded (/etc/init.d/postfix)
  Drop-In: /run/systemd/generator/postfix.service.d
           └─50-postfix-$mail-transport-agent.conf
   Active: active (running) since lun. 2018-07-30 08:12:03 CEST; 2 days ago
  Process: 1661 ExecStart=/etc/init.d/postfix start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/postfix.service
           ├─ 1898 /usr/lib/postfix/master
           ├─12326 qmgr -l -t unix -u
           ├─16561 pickup -l -t unix -u -c
           ├─17977 smtpd -n smtp -t inet -u -c -s 2 -v -o content_filter=spamassassin
           ├─17978 proxymap -t unix -u
           ├─17979 tlsmgr -l -t unix -u -c
           ├─17994 trivial-rewrite -n rewrite -t unix -u -c
           ├─18183 cleanup -z -t unix -u -c
           ├─18191 smtpd -n 127.0.0.1:10025 -t inet -u -o content_filter= -o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_helo_restrictions= ...
           ├─18275 pipe -n spamassassin -t unix user=spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
           ├─18279 smtp -n amavis -t unix -u -c -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20 -o smtp_bind_address=127.0....
           └─18282 smtp -t unix -u -c

août 01 22:15:21 mail.mondomaine.com postfix/smtpd[17977]: > localhost[127.0.0.1]: 221 2.0.0 Bye
août 01 22:15:21 mail.mondomaine.com postfix/smtpd[17977]: match_hostname: localhost ~? 192.168.1.0/24
août 01 22:15:21 mail.mondomaine.com postfix/smtpd[17977]: match_hostaddr: 127.0.0.1 ~? 192.168.1.0/24
août 01 22:15:21 mail.mondomaine.com postfix/smtpd[17977]: match_hostname: localhost ~? 127.0.0.0/8
août 01 22:15:21 mail.mondomaine.com postfix/smtpd[17977]: match_hostaddr: 127.0.0.1 ~? 127.0.0.0/8
août 01 22:15:21 mail.mondomaine.com postfix/smtpd[17977]: disconnect from localhost[127.0.0.1]
août 01 22:15:21 mail.mondomaine.com postfix/smtpd[17977]: master_notify: status 1
août 01 22:15:21 mail.mondomaine.com postfix/smtpd[17977]: connection closed
août 01 22:15:21 mail.mondomaine.com postfix/smtpd[17977]: rewrite stream disconnect
août 01 22:15:21 mail.mondomaine.com postfix/smtpd[17977]: proxymap stream disconnect
/etc/init.d/courier-authdaemon status

 courier-authdaemon.service - (null)
   Loaded: loaded (/etc/init.d/courier-authdaemon)
   Active: active (running) since lun. 2018-07-30 08:11:39 CEST; 2 days ago
  Process: 628 ExecStart=/etc/init.d/courier-authdaemon start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/courier-authdaemon.service
           ├─659 /usr/sbin/courierlogger -pid=/var/run/courier/authdaemon/pid -start /usr/lib/courier/courier-authlib/authdaemond
           ├─662 /usr/lib/courier/courier-authlib/authdaemond
           ├─701 /usr/lib/courier/courier-authlib/authdaemond
           ├─702 /usr/lib/courier/courier-authlib/authdaemond
           ├─703 /usr/lib/courier/courier-authlib/authdaemond
           ├─704 /usr/lib/courier/courier-authlib/authdaemond
           └─705 /usr/lib/courier/courier-authlib/authdaemond

août 01 22:03:17 mail.mondomaine.com authdaemond[659]: SQL query: SELECT username, password, "", 5000, 5000, "/vmailboxes", CONCAT(SUBSTRING_INDEX(username,'@',-1),'/',SUBS...tkhost.com'
août 01 22:03:17 mail.mondomaine.com authdaemond[659]: password matches successfully
août 01 22:03:17 mail.mondomaine.com authdaemond[659]: authmysql: sysusername=<null>, sysuserid=5000, sysgroupid=5000, homedir=/vmailboxes, address=athanyx@mondomaine.com, fulln...ions=<null>
août 01 22:03:17 mail.mondomaine.com authdaemond[659]: Authenticated: sysusername=<null>, sysuserid=5000, sysgroupid=5000, homedir=/vmailboxes, address=arthanyx@mondomaine.com, f...ions=<null>
août 01 22:03:19 mail.mondomaine.com authdaemond[659]: received auth request, service=imap, authtype=login
août 01 22:03:19 mail.mondomaine.com authdaemond[659]: authmysql: trying this module
août 01 22:03:19 mail.mondomaine.com authdaemond[659]: SQL query: SELECT username, password, "", 5000, 5000, "/vmailboxes", CONCAT(SUBSTRING_INDEX(username,'@',-1),'/',SUBS...autredomaine.fr'
août 01 22:03:19 mail.mondomaine.com authdaemond[659]: password matches successfully
août 01 22:03:19 mail.mondomaine.com authdaemond[659]: authmysql: sysusername=<null>, sysuserid=5000, sysgroupid=5000, homedir=/vmailboxes, address=arthanyx@monautredomaine.fr, full...ions=<null>
août 01 22:03:19 mail.mondomaine.com authdaemond[659]: Authenticated: sysusername=<null>, sysuserid=5000, sysgroupid=5000, homedir=/vmailboxes, address=arthanyx@monautredomaine.fr, ...ions=<null>
Hint: Some lines were ellipsized, use -l to show in full.
/etc/init.d/mysql status

 mysql.service - LSB: Start and stop the mysql database server daemon
   Loaded: loaded (/etc/init.d/mysql)
   Active: active (running) since lun. 2018-07-30 08:12:00 CEST; 2 days ago
  Process: 817 ExecStart=/etc/init.d/mysql start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/mysql.service
           ├─ 896 /bin/sh /usr/bin/mysqld_safe
           └─1373 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --log-error=/var/log/mysql/error.log --pid-file=/var/run/m...

juil. 30 08:11:59 mail.mondomaine.com mysql[817]: Starting MySQL database server: mysqld . . . . . . ..
juil. 30 08:12:00 mail.mondomaine.com systemd[1]: Started LSB: Start and stop the mysql database server daemon.
juil. 30 08:12:00 mail.mondomaine.com mysql[817]: Checking for tables which need an upgrade, are corrupt or were
juil. 30 08:12:00 mail.mondomaine.com mysql[817]: not closed cleanly..
juil. 30 08:12:00 mail.mondomaine.com /etc/mysql/debian-start[1715]: Checking for insecure root accounts.
juil. 30 08:12:00 mail.mondomaine.com /etc/mysql/debian-start[1724]: Triggering myisam-recover for all MyISAM tables

2-
4-
J’ai lancé un telnet depuis le serveur mail.mondomaine.com sur le port 25 et testé l’envoi d’un mail.
Tout s’est bien passé et j’ai bien reçu le mail sur ma boite externe (free)
Ce qui veut dire que l’envoi fonctionne très bien depuis le serveur lui même (via la ligne de commande ou imap en page web sur roundcube).

Mon problème est que je ne reçois rien. Mon serveur mail.mondomaine.com refuse toute connexion sur le port 25. Je ne pense pas que mes règles iptables soient mauvaises vu que sans y toucher tout fonctionnait avant. mais pour info les voici:

18   23064 2202K ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0            /* Accepte le bouclage local */
19   25135 3408K ACCEPT     all  --  eth0   *       192.168.1.0/24       192.168.1.0/24       /* Accepte le réseau local */
20       0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x29/0x29 /* Supprime les flags FIN URG et PSH (inutiles) */
21       0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x3F/0x00 /* Supprime tous les flags à zéro (inutiles) */
22       0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            /* Accepte l'ICMP */
23    2224  576K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED /* Accepter les connexions établies */
24       0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:53 /* Accepte le DNS TCP */
25       0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:53 /* Accepte le DNS UDP */
26       0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:953 /* Accepte le DNSSec TCP */
27       0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:953 /* Accepte le DNSSec UDP */
28       0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22 /* Accepte le SSH 22 */
29       0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:2221 /* Accepte le SSH 2221 */
30       0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80 /* Accepte le HTTP 80 */
31       3   180 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:8021 /* Accepte le HTTP 8021 */
32       0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443 /* Accepte le HTTPS 443 */
33      47  2896 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:44321 /* Accepte le HTTPS 44321 */
34      55  3004 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:143 /* Accepte IMAP */
35      52  2732 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:993 /* Accepte le IMAP SSL TCP */
36       0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:993 /* Accepte le IMAP SSL UDP */
37     342 17312 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:25 /* Accepte le SMTP */
38      18  1060 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:587 /* Accepte le SMTP avec chiffrement */
39       0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:465 /* Accepte le SMTP SSL */
40    5729  212K LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            LOG flags 0 level 4 prefix "paquet_IPv4_inattendu "

Entre le moment ou ça a marché et celui ou ça a déconné, je n’ai touché que peu de fichiers et principalement ceux qui renseignaient les login/pass de connexion à la bdd.
Voici la liste des fichiers touché:

postfix/sasl/smtpd.conf
postfix/sql/mysql_virtual_transports.cf
postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
postfix/sql/mysql_virtual_domains_maps.cf
postfix/sql/mysql_virtual_mailbox_limit_maps.cf
postfix/sql/mysql_virtual_alias_domain_maps.cf
postfix/sql/mysql_virtual_alias_maps.cf
postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
postfix/sql/mysql_virtual_mailbox_maps.cf

courier/authmysqlrc

postfixadmin/dbconfig.inc.php
postfixadmin/dbconfig.inc.php.ucf-dist

pam.d/smtp

dbconfig-common/postfixadmin.conf

roundcube/public_html/plugins/password/config.inc.php
roundcube/plugins/password/config.inc.php

J’ai peut être ensuite touché la conf de postfix, le main.cf, voyant que ça ne marchait plus comme il fallait.

3-
Je crois que j’ai fais un postmap des fichiers sql de connexion à la base mais bien après et sans vraiment savoir s’il fallait que je le fasse en cas de connexion à la base de donnée.

Voilà j’espère avoir donné de plus amples informations pour que vous puissiez au mieux m’aider dans ma recherche de panne.

Tu peux augmenter la verbosité en doublant le v ; avec -vv
Je ne sais pas si c’est utile désormais.

Le mode -vv est très bavard, on devrait pouvoir constater quelque chose ; mais je ne sais pas où.

J’ai essayé :
echo "Test E-mail depuis postfix" | mail -s "Test" votre_adresse@email
et mon /var/log/mail.log qui était vide s’est rempli.

Que donne ls -l /var/log/mail.* ?

Je n’ai utilisé postfix/smtp que pour avoir un rapport par e-mail si un miroir RAID est dégradé.

J’avance un peu, merci pour les suggestions.
Effectivement en regardant dans mail.err je viens de voir que j’ai:

Jul 31 23:38:33 mail postfix/postmap[21203]: fatal: open mysql_virtual_alias_domain_catchall_maps.cf.db: Permission denied
Jul 31 23:38:55 mail postfix/postmap[21218]: fatal: open mysql_virtual_alias_domain_catchall_maps.cf.db: Permission denied
Jul 31 23:39:07 mail postfix/postmap[21271]: fatal: open mysql_virtual_alias_domain_mailbox_maps.cf.db: Permission denied
Jul 31 23:39:22 mail postfix/postmap[21287]: fatal: open mysql_virtual_alias_domain_maps.cf.db: Permission denied
Jul 31 23:39:30 mail postfix/postmap[21288]: fatal: open mysql_virtual_alias_maps.cf.db: Permission denied
Jul 31 23:39:36 mail postfix/postmap[21289]: fatal: open mysql_virtual_domains_maps.cf.db: Permission denied

ce qui tendrait à penser qu’il y a un problème de droits sur les fichier non ?
pour l’instant le proprio de ces fichiers .cf et .cf.db est postfix et j’ai

-rwxr-x--- *.cf
-rw-r----- *.cf.db

j’ai comme l’impression que c’est pas très bon. pourtant les fichiers db sont générés par la commande postmap.

Et tout ça explique aussi pourquoi j’ai aussi cette erreur dans les logs

Aug  2 08:52:39 mail postfix/trivial-rewrite[396]: warning: do not list domain mondomaine.com in BOTH mydestination and virtual_mailbox_domains

En effet.

Il ne refuse pas les connexions puisque tu as pu t’y connecter en telnet. Quand tu te connectes par telnet tu simule la connexion d’un serveur mail qui veut faire passer un mail à ton serveur mail.

Pour info ton serveur ne devrait pas accepter d’envoyer du mail vers un autre domaine, mais que vers ses domaines locaux par le port 25. Sinon ça veut dire qu’on peut s’y connecter et déclarer un mail venant d’un domaine local vers free.fr pour envoyer du spam. Pour l’envoi de mail vers l’extérieur ça devrait toujours être par protocole chiffré (submission, smtps…) avec authentification obligatoire.

Pour tester la réception de courriel tu dois refaire l’opération telnet avec une adresse venant d’un autre domaine comme source et ton adresse comme destination

Concernant les logs, tu à une erreur de configuration classique:
Tu devrais mettre toute les restrictions sur le dernier test effectué par ton serveur mail. Je m’explique:
Quand ton serveur fait les tests pour savoir si un message va être accepté ou non il les fait dans un certain ordre:
smtpd_client_restrictions
smtpd_helo_restrictions
smtpd_sender_restrictions
smtpd_recipient_restrictions

Du coup il vaut mieux mettre tout les test sur le smtpd_recipient_restrictions car ça va quand même marcher et tu aura plein d’info sur les mails rejetés. (exemple si tu met une restriction sur client, c’est à dire l’ip du serveur qui se connecte, et que ton serveur rejete quelqu’un sur cette base, il dira qu’il a rejeté le serveur à l’ip x.x.x.x. Si tu met la même restriction sur recipient, il te dira qu’il a rejetté le mail de Z pour X qui s’est connecté depuis x.x.x.x, qui s’est annoncé avec tel nom helo parce qu’il n’a pas la bonne ip.
C’est assez contre intuitif mais c’est très utile pour faire du débogage. Par exemple voici ma conf de restrictions:

smtpd_client_restrictions = 
smtpd_helo_restrictions = 
smtpd_sender_restrictions = 
smtpd_recipient_restrictions =
	reject_invalid_hostname,
	reject_non_fqdn_hostname,
	reject_non_fqdn_sender,
        reject_non_fqdn_recipient,
	reject_unknown_recipient_domain,
	permit_mynetworks,
	permit_sasl_authenticated,
        reject_unauth_destination,
	check_helo_access hash:/etc/postfix/filters/hash/helo_checks,
	check_client_access hash:/etc/postfix/filters/hash/client_checks,
	check_client_access pcre:/etc/postfix/filters/pcre/client_checks.pcre,
	check_sender_access hash:/etc/postfix/filters/hash/sender_checks,
	check_sender_access pcre:/etc/postfix/filters/pcre/sender_checks.pcre,
	check_recipient_access hash:/etc/postfix/filters/hash/recipient_checks,
	check_recipient_access pcre:/etc/postfix/filters/pcre/recipient_checks.pcre,
	reject_invalid_helo_hostname,
	reject_non_fqdn_helo_hostname,
	reject_unknown_helo_hostname,
	reject_unknown_sender_domain,
	check_policy_service unix:private/policy,
  	reject_rbl_client zen.spamhaus.org,
        reject_rbl_client cbl.abuseat.org,
 	reject_rhsbl_sender rhsbl.sorbs.net,
	reject_rhsbl_client rhsbl.sorbs.net,
	permit

Note que permit à la fin ne sert à rien. C’est juste pour rapeller qu’après ces test c’est openbar.
Je te conseille aussi de regrouper ta config avec les réglages par theme et de les commenter systématiquement. Ça t’aidera à t’y retrouver et à t’assurer que tu comprends bien tous les réglages que tu as fais.

Pourquoi as-tu utilisé la variable smtpd_relay_restrictions? Normalement il vaut mieux laisser les valeurs par defaut. A quel usage cela correspond pour toi?

Merci beaucoup Baruch de prendre du temps pour tenter de m’aider.
Effectivement comme je disais au début, il me reste encore pas mal à faire sur cette config. J’y ai été petit à petit en suivant divers tutos, en les mixant, comparant etc…
J’ai pas mal parcouru la doc de postfix mais j’avoue que ça devient assez vite difficile de tout intégrer et tout piger du premier coup. J’ai pas mal fonctionné à tâton.
Ca fait un an que je suis en train de mettre en place un ensemble dns, mail, web (une vm par service) sur un serveur esxi autohébergé derrière une box orange. Le tout en ayant un boulot qui me prend nettement plus de 40h par semaine et une vie de famille (pour expliquer le temps mis).
Du coup, même si j’essaye de commenter, j’ai un peu de mal parfois à me souvenir de tout ce que je fais et dans quel ordre.
J’étais arrivé à quelque chose de stable qui semblait fonctionner correctement et j’étais en train d’implémenter postfixadmin lorsque j’ai eu ma panne. Comme je l’ai dit plus haut, je me suis rendu compte d’un problème lié au mot de passe que j’avais choisi pour l’utilisateur postfix qui contenait un # . J’ai donc tout changé en recherchant toutes les occurrences du-dit mot de passe dans le dossier /etc/* et en remplaçant lorsque cela avait un rapport avec le mail (postfix, postfixadmin, courrier).
J’ai rempli mon fichier main.cf au fur et à mesure de mes découvertes dans tel ou tel tuto sur le net en essayant de commenter au mieux. Je me rend compte maintenant que j’aurais dû utiliser git de meilleure manière et penser à faire des commit à chaque modification. Je n’ai malheureusement pas encore ce réflexe.

Voici mon fichier main.cf complet ce coup-ci, si tu peux y consacrer un peu de ton temps pour me dire ce que t’en penses en plus des remarques précédentes :


##
## Fichier de configuration de postfix version mondomaine.com :)
## 

# Activer/désactiver la notification de l'arrivée d'un nouveau message en console
biff = no

# Avec le courrier soumis localement, ajoute la chaîne ".$mydomain" aux adresses qui
# n'ont pas d'information ".domaine" (seulement le nom d'hôte)
# Avec le courrier soumis depuis l'extérieur, ajoute la chaîne "@$remote_header_rewrite_domain" à la place
append_dot_mydomain = no

# Temps au delà duquel l'expéditeur reçoit les en-têtes d'un message toujours en file d'attente.
#delay_warning_time = 4h

##
## Chemins des répertoires Locaux
##
# L'emplacement du répertoire racine de la file d'attente de Postfix.
queue_directory = /var/spool/postfix

# L'emplacement des commandes administratives de Postfix.
command_directory = /usr/sbin

# Le répertoire contenant les programmes support et les démons de Postfix.
daemon_directory = /usr/lib/postfix

##
## General
##
# Utilisateur propriétaire des process démons de postfix et de la file d'attente.
mail_owner = postfix

# Nom d'hôte du serveur FQDN
myhostname = mail.mondomaine.com

# Nom du domaine FQDN
mydomain = mondomaine.com

# Domaine d'origine des mails envoyés localement
myorigin = $mydomain

# Interfaces réseau de réception des mails
# On ne laisse pas all pour éviter de faire un open-relay
#inet_interfaces = all
inet_interfaces = $myhostname, localhost

# Protocoles inet acceptés
inet_protocols = all

# Liste des domaines que la machine considère comme étant elle-même la destination finale
#mydestination = $myhostname, $mydomain, localhost.$mydomain, localhost
mydestination = $myhostname localhost.$mydomain localhost $mydomain

# Tables de correspondances contenant tous les noms ou adresses des destinataires locaux :
# une adresse de destination est locale lorsque son domaine correspond à $mydestination, $inet_interfaces ou $proxy_interfaces.
local_recipient_maps = $virtual_mailbox_maps

# Le transporteur de messages par défaut pour les domaines qui correspondent à $mydestination, $inet_interfaces ou $proxy_interfaces.
#local_transport = virtual

# La liste des clients SMTP "internes" qui ont plus de privilèges que les "étrangers".
# Note: A ajouter pour le réseau local ipv6 [2a01:cb1d:81ef:xxxx:xxxx:xxxx::]/56 
mynetworks = 192.168.1.0/24 127.0.0.0/8 [::1]/128 [2a01:cb1d:81ef:XXXX::]/56

# Hôte relais de transport des mails envoyés, si vide envoyé directement à la destination
relayhost = smtp.orange.fr:25

# Liste des alias utilisées par l'agent de distribution local
#alias_maps = hash:/etc/aliases #Pour utilisation avec comptes locaux
alias_maps = hash:/etc/postfix/virtuals

# Spécifie la(les) base(s) qui sont construites avec "newaliases" ou "sendmail -bi"
#alias_database = hash:/etc/aliases #Pour utilisation avec comptes locaux
alias_database = hash:/etc/postfix/virtuals

# Spécifie le séparateur entre le nom d'utilisateur et l'extension
recipient_delimiter = +

# Liste des classes d'erreur qui doivent être rapportées au postmaster.
# Par défaut: resource, software
#notify_classes = bounce, delay, policy, protocol, resource, software

##
## Stockage des mails
##
# Spécifie le répertoire de destination des mails relatif au répertoire de l'utilisateur
# pour utilisation des users unix
home_mailbox = Maildir/

# Taille maximum de la boite mail
mailbox_size_limit = 100000000

# Spécifie le répertoire ou les boites mails style-UNIX sont gardées
mail_spool_directory = /var/spool/mail

# Spécifie la commande externe à utiliser
#mailbox_command = procmail -a "$EXTENSION"

##
## Banner
##
# Spécifie le texte qui suit le code 220 dans le message de bienvenue du serveur SMTP
smtpd_banner = $myhostname ESMTP $mail_name $mail_version

# Spécifie le nom du logiciel de mail
mail_name = Postfix

# Spécifie la version du logiciel de mail
mail_version = Postfix-mondomaine.V2

# Liste optionnelle de domaines dont la structure des sous-domaines sera masquée dans les adresses.
masquerade_domains = $mydomain

##
## Address rewriting
##
# Tables optionelles de correspondances d'adresses d'expeditions pour l'enveloppe et l'en-tête.
#Commenté car visiblement ça ne sert plus à rien avec la gestion des users en bdd
#sender_canonical_maps = hash:/etc/postfix/sender_canonical

##
## Paramètres SMTPD
##
# Access restrictions for mail relay control that the Postfix SMTP server applies in the context
# of the RCPT TO command, before smtpd_recipient_restrictions.
#config récupérée de www:
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination permit_inet_interfaces permit_mx_backup
#Enlevé le 15/05/18 car dans les logs il est marqué de virer check_relay_domains pour mettre reject_unauth_destination
#smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination check_relay_domains
#smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination

##
## TLS parameters
##
# Certificats:
# Fichier contenant le certificat RSA du serveur SMTP de Postfix au format PEM.
smtpd_tls_cert_file = /etc/postfix/ssl/postfix-cert.pem
# Fichier contenat la clef privée RSA du serveur SMTP de Postfix au format PEM.
smtpd_tls_key_file = /etc/postfix/ssl/postfix-key.pem

# On utilise STARTTLS ?
smtpd_use_tls=yes

# Le niveau de sécurité TLS de SMTP pour le serveur SMTP Postfix; quand une valeur non-nulle est spécifiée,
# ceci écrase les paramètres obsolètes smtpd_use_tls et smtpd_enforce_tls.
smtpd_tls_security_level = may

# Niveau de verbosité des logs
smtpd_tls_loglevel = 1

# Annonce le support STARTTLS et requiert que les clients SMTP distants utilisent le chiffrement TLS.
#smtpd_tls_auth_only = yes

# Base de donnée du cache de sessions TLS
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.



#
# Ajout du 12/10/17 suite au post https://www.debian-fr.org/t/authentification-sasl-avec-postfix/4257
#
##
## SUPPORT SASL POUR LES CLIENTS
##
## Les options suivantes définissent les paramètres requis par Postfix pour activer
## le support Cyrus-SASL pour l'authentification des clients mail.
##
# Active l'authentification SASL dans le serveur SMTP de Postfix.
smtpd_sasl_auth_enable = yes
# Pour supprimer la possibilité de faire passer les login/pwd en texte plain
#smtpd_sasl_security_options = noanonymous, noplaintext
# noplaintext: Interdit les méthodes utilisant les mots de passe en clair. 
# noactive: Interdit les méthodes sujettes à une attaque active (sans dictionnaire). 
# nodictionary: Interdit les méthodes sujettes à une attaque passive (par dictionnaire). 
# noanonymous:  Interdit les méthodes qui autorisent l'authentification anonyme. 
# mutual_auth: N'autorise que les méthodes fournissant une authentification mutuelle (non disponible avec SASL version 1).
smtpd_sasl_security_options = noanonymous

# Reporte le nom d'utilisateur SASL authentifié dans l'en-tête de message Received du serveur smtpd
smtpd_sasl_authenticated_header = yes

# Nom de royaume d'authentification SASL local.
smtpd_sasl_local_domain = $myhostname

# Active l'interoperabilité avec les clients SMTP qui implémentent une version obsolete de la commande AUTH (RFC 2554)
#Les anciens clients SMTP Microsoft utilisent une version non standard de la syntaxe du protocole AUTH et s'attendent
# à ce que le serveur SMTP réponde au EHLO avec "250 AUTH=stuff" au lien de "250 AUTH stuff".
#Pour accueillir de tels clients (en complément des clients conformes), utilisez ce qui suit :
broken_sasl_auth_clients = yes

# Tables optionnelles de consultation du client SMTP contenant une entrée username:password par nom de machine ou domaine distant.
smtp_sasl_password_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf
#smtp_sasl_password_maps = hash:/etc/postfix/test/sasl_client

# Restrictions d'accès que le serveur SMTP de Postfix applique dans le contexte d'une commande RCPT TO
# Note: voir s'il faut ajouter check_relay_domains
smtpd_recipient_restrictions =  permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination



##
## Ajout manuel du 11/10/17 vu sur wiki.debian-fr.xyz/Configuration_d'un_serveur_mail_avec_Postfix
##

# Le nom d'un transporteur du courrier qui filtre les messages après mise en file d'attente.
content_filter = amavis:[127.0.0.1]:10024

# Active ou desactive la validation des destinataires, le filtrage de contenu intégré ou les correspondances d'adresse.
receive_override_options = no_address_mappings

##
## Ajout manuel du 26/10/17
## pour la gestion des users, transports, forwardings et domaines virtuels
##
# Liste optionnelle de noms de domaines d'alias virtuels, c'est à dire les domaines pour lesquels
# toutes les adresses ont des alias pointant sur des adresses de domaines locaux ou extérieurs.
virtual_alias_domains =
		 proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf

# Tables de optionnelles faisant correspondre des adresses ou des domaines spécifiés avec des adresses locales ou distantes.
#Avant modif pour postfixadmin:
#virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf
virtual_alias_maps = 
		proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf,
		proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf,
		proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf

# Tables de correspondances entre destinataires et identifiants de groupe pour la livraison vers des boîtes virtuelles.
virtual_gid_maps = static:5000

# Préfixe que l'agent de livraison virtual(8) ajoute devant tous les chemins résultats de la recherche dans les tables $virtual_mailbox_maps.
virtual_mailbox_base = /vmailboxes

# Liste de domaine livrés via le transporteur de messages $virtual_transport.
#Avant modif pour postfixadmin:
#virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf

# Tables de correspondances optionnelles contenant toutes les adresses valides des domaines correspondant à virtual_mailbox_domains.
#Avant modif pour postfixadmin:#Avant modif pour postfixadmin:
virtual_mailbox_maps = proxy:mysql:/etc/postfix/test/mysql-virtual_mailboxes.cf
#virtual_mailbox_maps =
#		proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf,
#		proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf

# Tables de correspondances entre destinataire et UID que l'agent de livraison virtual utilise
# en écrivant dans la boîte-aux-lettres du destinataire.
virtual_uid_maps = static:5000

# Tables de correspondances de limite de taille de boite mail.
#Avant modif pour postfixadmin:
#virtual_mailbox_limit_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_limit_maps.cf

#Ajout pour postfixadmin
#virtual_create_maildirsize = yes
#virtual_mailbox_extended = yes
#virtual_mailbox_limit_override = yes
#virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please try again later.
#virtual_overquota_bounce = yes

# Tables optionnelles de correspondances entre adresse de destination et (transporteur, destination suivante).
transport_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_transports.cf

# Les tables de correspondances que le serveur proxymap est autorisé à lire.
proxy_read_maps = $virtual_alias_maps 
	$virtual_alias_domains 
	$virtual_mailbox_maps 
	$virtual_mailbox_domains
	$virtual_mailbox_limit_maps
	$transport_maps 
	$local_recipient_maps
	$relay_recipient_maps
	$relay_domains
	$canonical_maps
	$sender_canonical_maps 
	$recipient_canonical_maps 
	$relocated_maps 
	$mynetworks
# Supprimé car la commande ne lit pas tout ce qui ne commence pas par proxy: d'après la doc
#	$mydestination 

# Restrictions optionelles que le serveur SMTP de Postfix applique dans le contexte des commandes MAIL FROM.
smtpd_sender_restrictions = permit_sasl_authenticated
        reject_unauth_pipelining
        permit_mynetworks
        reject_unauth_destination
        reject_unknown_sender_domain
        reject_non_fqdn_sender


## Trouvé sur https://wiki.debian-fr.xyz/Configuration_d'un_serveur_mail_avec_Postfix
## A voir si uitile
# Restrictions d'accès optionelles du serveur SMTP pour les requêtes de connexion au service SMTP.
# Règles pour accepter ou refuser une connexion :
# - on attend une seconde (pour piéger les zombies)
# - on interdit la parallélisation là où il n'est pas sensé y en avoir.
#smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, sleep 1, reject_unauth_pipelining

# Restrictions optionnelles que le serveur SMTP de Postfix applique dans le contexte de la commande SMTP HELO.
# Règles pour accepter ou refuser un message, dès lors qu'on connaît le nom
# de l'hôte de l'expéditeur (par sa commande HELO ou EHLO) :
# - on refuse les noms d'hôte invalides.
#smtpd_helo_restrictions = reject_invalid_helo_hostname

# Restrictions optionelles que le serveur SMTP de Postfix applique dans le contexte des commandes MAIL FROM.
# Règles pour accepter ou refuser un message, dès lors qu'on connaît l'adresse
# de l'expéditeur :
# - s'il vient d'un expéditeur inexistant de notre domaine, on le rejette ;
# - si le domaine de l'expéditeur n'a pas d'IP ou de MX, on le refuse ;
# - s'il vient d'un client sûr ou d'un client authentifié, on l'accepte ;
# - si l'adresse de l'expéditeur n'est pas sous forme canonique, on le refuse.
#smtpd_sender_restrictions = reject_unlisted_sender, reject_unknown_sender_domain, permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_sender

# Règles pour accepter ou refuser un message, dès lors qu'on connaît le
# destinataire (par la commande RCPT TO) :
# - s'il est destiné à un expéditeur forgé chez nous, on le rejette ;
# - s'il est destiné à un domaine forgé, on le rejette ;
# - s'il vient d'un hôte sûr ou d'un client authentifié, on l'accepte ;
# - si l'adresse de destination n'est pas sous forme canonique, on le refuse ;
# - finalement, s'il n'est pas destiné à un domaine que l'on gère ou pour
#   lequel on relaie, on le refuse.
#smtpd_recipient_restrictions = reject_unlisted_recipient, reject_unknown_recipient_domain, permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_recip$

Concernant la variable smtpd_relay_restrictions comme je l’ai mis en comm dans la conf, j’ai récupéré ça sur le web (à ce moment là je ne mettais pas la source dans le comm, un peu nul je dois avouer avec le recul).

Dans tous les cas, un grand merci à toi de t’intéresser ainsi à “mon cas”.

Ouais le courriel ça paraît con parce que c’est le truc le plus basique coté utilisateur, mais c’est un des trucs les plus complexe à mettre en place de façon abouti. La première fois que je m’y suis penché ça m’a pris 1 bon mois à plein temps :smiley: Donc si tu veux pas perdre de temps il faut être rigoureux et prendre le temps de comprendre ce que tu fais.
Si tu veux pouvoir utiliser un serveur mail en production, tu devrais te familiariser avec ses différents éléments, leurs roles et les méthodes de diagnostic associées. On fini toujours par arriver à faire marcher un truc en copiant collant des trucs du web. La vraie compétence c’est comment on fait quand ça marche plus: comprendre rapidement pourquoi, pour éviter de rester sans mail pendant 2 semaines…

Et donc ? N’oublie pas de mettre au carré tes restrictions avant pour avoir des logs utiles. Telnet c’est le meilleur outils de diagnostic pour la réception de mail car c’est très bas niveau et ça te montre chaque étape de la communication entre les serveurs mail

A mon avis tu devrais la commenter et/ou mettre la valeur par défaut à moins d’avoir une bonne raison contre…