Docker-mailserver: Relayage SMTP en fonction du destinataire

CrĂ©Ă© le 24 avr. 2020  Â·  4Commentaires  Â·  Source: tomav/docker-mailserver

Le contexte

J'ai crĂ©Ă© un serveur domestique avec mon IP non-rDNS pour mon entreprise de garage (une startup sans aucun financement et pendant COVID-19, ouais! đŸ„‡ ), maintenant je vois que je ne peux pas livrer de courrier Ă  ces serveurs qui ont besoin de vĂ©rifier rDNS enregistrements. Comme mx01.1and1.es ou kundenserver.de... Il reporte toujours mes messages sans aucune communication vers ma boĂźte de rĂ©ception e-mail, le seul moyen de le dĂ©tecter est basĂ© sur l'information quotidienne ou la recherche dans les journaux du serveur en temps rĂ©el.

J'ai trouvĂ© des solutions pour avoir un enregistrement rDNS comme SendGrid, mais pour le freemium, seuls 100 messages par jour pouvaient ĂȘtre proposĂ©s, et ce n'est pas suffisant, car tous nos partenaires ont besoin de ce quota. Et je ne pense pas que la crĂ©ation de plusieurs comptes SendGrid soit un idĂ©al Ă©thique.

Comportement prévisible

Peut-ĂȘtre qu'il existe un moyen qui me permet d'utiliser le serveur relais uniquement en cas de domaine du destinataire.

Comportement réel

À l'heure actuelle, comme le dit le wiki Repo, cela nous permet simplement d'utiliser le relais SENDER : ici

Solution possible

C'est peut-ĂȘtre la solution ?
https://www.linuxbabe.com/mail-server/postfix-transport-map-relay-map-flexible-email-delivery/amp
http://www.postfix.org/transport.5.html

Je pense que transport_maps et relay_transport sont la clé. Mais je n'ai vraiment pas les compétences techniques pour suivre et exécuter le processus inclus dans le lien.

Étapes pour reproduire

  1. Envoyez un e-mail situé dans mx01.1and1.es ou kundenserver.de, je suis désolé de ne pouvoir fournir aucune adresse e-mail en raison du problÚme de confidentialité.

Votre environnement

  • Toute trace de pile pertinente ("Trace complĂšte" de prĂ©fĂ©rence) :

24 avril 11:46:44 MYHOST postfix/smtp[25410] : 6CAE65D007 : l'hÎte mx01.1and1.es[217.72.192.67] a refusé de me parler :
554-kundenserver.de (mxeue109) Service Nemesis ESMTP non disponible 554-Pas de service SMTP 554-Mauvais enregistrement de ressource DNS PTR. 554 Pour des explications, visitez https://www.ionos.com/help/index.php?id=2425&ip=0.0.0.0&c=rdns

Merci d'avoir crĂ©Ă© un docker aussi magnifique pour que les gens comme nous puissent l'utiliser facilement. J'espĂšre obtenir votre aide pour rĂ©soudre ce problĂšme et peut-ĂȘtre que cela pourra aider d'autres personnes aussi ! ??

documentation enhancement

Commentaire le plus utile

AprĂšs avoir enquĂȘtĂ© Ă  fond sur la question avec mon ignorance presque totale et ma capacitĂ© nulle sur le SystĂšme, j'ai rĂ©ussi Ă  contrĂŽler sĂ©parĂ©ment l'envoi des emails selon le destinataire (adresse ou domaine).

Ce que j'ai rĂ©alisĂ© est trĂšs sale, j'espĂšre pouvoir avoir votre aide pour l'amĂ©liorer et, si possible, ajouter cette fonction au bien-aimĂ© setup.sh ou quelque chose pour qu'il puisse ĂȘtre bien intĂ©grĂ© :

Créez postfix-main.cf avec le contenu suivant :

transport_maps=texthash:/etc/postfix/transport
smtp_sasl_auth_enable=yes
broken_sasl_auth_clients=yes
smtp_sasl_password_maps=texthash:/etc/postfix/sasl_passwd
smtp_sasl_security_options=noanonymous
smtp_sasl_tls_security_options= noanonymous
smtp_tls_security_level=may
# smtp_tls_note_starttls_offer=yes
# local_recipient_maps=$virtual_mailbox_maps $alias_maps

Explication:

Demandez à Docker d'étendre la configuration principale ( main.cf ) de POSTFIX comme suit :

transport_maps = texthash:/etc/postfix/transport
Le guide pour indiquer Ă  notre serveur quels destinataires doivent utiliser le relais.

smtp_sasl_auth_enable = yes
DĂ©sormais, tous les serveurs relais ont besoin d'une authentification, car nous demandons Ă  notre serveur de le faire.

broken_sasl_auth_clients = yes
Certains serveurs relais peuvent utiliser une méthode d'authentification rare ou obsolÚte, car nous laissons un enregistrement sur notre serveur qui nécessite également une authentification.

smtp_sasl_password_maps = texthash:/etc/postfix/sasl_passwd
Nous indiquons oĂč les mots de passe sont enregistrĂ©s.

smtp_sasl_security_options = noanonymous
Je ne sais pas à quoi ça sert, je pense que c'est pour refuser le serveur relais s'il nous demande de rester anonyme.

smtp_sasl_tls_security_options = noanonymous
Je ne sais pas à quoi ça sert, je pense que c'est pour refuser le serveur relais s'il nous demande de rester anonyme lorsque nous établissons une connexion en utilisant TLS.

smtp_tls_security_level = may
Si le serveur relais nous demande d'utiliser TLS, nous disons OK, mais s'il ne nous le demande pas, nous nous connecterons aussi.

# smtp_tls_note_starttls_offer = yes
# local_recipient_maps = $virtual_mailbox_maps $alias_maps

Ce sont des données que je laisse là pour les tutos que j'ai consultés sur Internet, elles sont commentées sur les raisons pour lesquelles elles ne fonctionnent pas.

Créez un transport avec le contenu suivant :

local.com      :
gmail.com      relay: [relay server 1]: 587
*              relay: [relay server 2]: 25

Explication:
VoilĂ  tu mets tes rĂšgles, je ne sais toujours pas trĂšs bien ce que tout peut faire avec ce fichier, pour l'instant tu fais les choses suivantes :

  1. Pour vos propres emails (arrivée ou envoi automatique), il est important de terminer par un : sinon votre serveur devient fou.
  2. Pour un domaine spécifique, par exemple gmail.com, accédez au serveur relais 1 port 587.
  3. Pour tous les autres e-mails, utilisez * pour tout inclure.

Il y a plus de méthodes d'utilisation ici, mais je ne sais pas trop comment toutes les appliquer :
http://www.postfix.org/transport.5.html

Créez sasl_passwd avec le contenu suivant :

[relay server 2]:25  USERNAME:PASSWORD
[relay server 1]:587 USERNAME:PASSWORD

Explication:
Ici, l'important est de les faire correspondre à votre dossier de transport. Je comprends que cela sera utilisé par votre serveur pour s'authentifier lorsqu'il se rendra sur les serveurs relais.

Et enfin, copiez tous ces fichiers dans la routine /config de votre Docker.

Modifiez ensuite votre docker-compose.yml en ajoutant :

     - ./config/transport:/etc/postfix/transport
     - ./config/sasl_passwd:/etc/postfix/sasl_passwd

Maintenant, vous ĂȘtes prĂȘt Ă  partir ! (J'espĂšre)

Souhaitant que vous puissiez obtenir si vous avez besoin de séparer le serveur SMTP qui fait office de relais selon le destinataire comme moi.

Je souhaite aussi que quelqu'un puisse m'aider Ă  amĂ©liorer ce que j'ai fait et mĂȘme l'intĂ©grer dans l'Image, il pourrait sĂ»rement y avoir beaucoup de personnes intĂ©ressĂ©es.

Tous les 4 commentaires

IntĂ©ressant. Je n'ai pas du tout utilisĂ© cette approche. Cependant, si vous avez une adresse IP fixe, vous pourrez peut-ĂȘtre demander Ă  votre FAI s'il peut ajouter un enregistrement DNS inversĂ© pour vous ? Si vous avez de la chance, ils le feront. Cela m'est arrivĂ© une fois... mais je n'ai pas rĂ©ussi Ă  en convaincre plusieurs autres. Sinon, j'espĂšre que quelqu'un qui l'utilise rĂ©pondra. Bonne chance avec ton entreprise!

IntĂ©ressant. Je n'ai pas du tout utilisĂ© cette approche. Cependant, si vous avez une adresse IP fixe, vous pourrez peut-ĂȘtre demander Ă  votre FAI s'il peut ajouter un enregistrement DNS inversĂ© pour vous ? Si vous avez de la chance, ils le feront. Cela m'est arrivĂ© une fois... mais je n'ai pas rĂ©ussi Ă  en convaincre plusieurs autres. Sinon, j'espĂšre que quelqu'un qui l'utilise rĂ©pondra. Bonne chance avec ton entreprise!

Merci beaucoup pour votre soutien, lĂ  oĂč je suis, il est pratiquement impossible de demander une adresse IP fixe et de demander au FAI de mettre un enregistrement rDNS dessus. Parce que nous parlons de service Internet rĂ©sidentiel (pour les utilisateurs Ă  domicile et pas cher) que lorsque vous les appelez au tĂ©lĂ©phone pour demander de l'aide, la seule solution qu'ils vous donnent est de redĂ©marrer votre routeur.

J'ai renouvelé mon fil avec un nouveau lien : https://www.linuxbabe.com/mail-server/postfix-transport-map-relay-map-flexible-email-delivery/amp Car je me suis rendu compte que le précédent parlait sur la façon d'obtenir des e-mails, mais ce que je voulais vraiment, c'était de contrÎler comment ils doivent sortir par domaine.

Merci beaucoup pour votre commentaire et votre aide, j'aime beaucoup l'ambiance de cette communauté. J'espÚre pouvoir t'aider sur d'autres choses. ??

AprĂšs avoir enquĂȘtĂ© Ă  fond sur la question avec mon ignorance presque totale et ma capacitĂ© nulle sur le SystĂšme, j'ai rĂ©ussi Ă  contrĂŽler sĂ©parĂ©ment l'envoi des emails selon le destinataire (adresse ou domaine).

Ce que j'ai rĂ©alisĂ© est trĂšs sale, j'espĂšre pouvoir avoir votre aide pour l'amĂ©liorer et, si possible, ajouter cette fonction au bien-aimĂ© setup.sh ou quelque chose pour qu'il puisse ĂȘtre bien intĂ©grĂ© :

Créez postfix-main.cf avec le contenu suivant :

transport_maps=texthash:/etc/postfix/transport
smtp_sasl_auth_enable=yes
broken_sasl_auth_clients=yes
smtp_sasl_password_maps=texthash:/etc/postfix/sasl_passwd
smtp_sasl_security_options=noanonymous
smtp_sasl_tls_security_options= noanonymous
smtp_tls_security_level=may
# smtp_tls_note_starttls_offer=yes
# local_recipient_maps=$virtual_mailbox_maps $alias_maps

Explication:

Demandez à Docker d'étendre la configuration principale ( main.cf ) de POSTFIX comme suit :

transport_maps = texthash:/etc/postfix/transport
Le guide pour indiquer Ă  notre serveur quels destinataires doivent utiliser le relais.

smtp_sasl_auth_enable = yes
DĂ©sormais, tous les serveurs relais ont besoin d'une authentification, car nous demandons Ă  notre serveur de le faire.

broken_sasl_auth_clients = yes
Certains serveurs relais peuvent utiliser une méthode d'authentification rare ou obsolÚte, car nous laissons un enregistrement sur notre serveur qui nécessite également une authentification.

smtp_sasl_password_maps = texthash:/etc/postfix/sasl_passwd
Nous indiquons oĂč les mots de passe sont enregistrĂ©s.

smtp_sasl_security_options = noanonymous
Je ne sais pas à quoi ça sert, je pense que c'est pour refuser le serveur relais s'il nous demande de rester anonyme.

smtp_sasl_tls_security_options = noanonymous
Je ne sais pas à quoi ça sert, je pense que c'est pour refuser le serveur relais s'il nous demande de rester anonyme lorsque nous établissons une connexion en utilisant TLS.

smtp_tls_security_level = may
Si le serveur relais nous demande d'utiliser TLS, nous disons OK, mais s'il ne nous le demande pas, nous nous connecterons aussi.

# smtp_tls_note_starttls_offer = yes
# local_recipient_maps = $virtual_mailbox_maps $alias_maps

Ce sont des données que je laisse là pour les tutos que j'ai consultés sur Internet, elles sont commentées sur les raisons pour lesquelles elles ne fonctionnent pas.

Créez un transport avec le contenu suivant :

local.com      :
gmail.com      relay: [relay server 1]: 587
*              relay: [relay server 2]: 25

Explication:
VoilĂ  tu mets tes rĂšgles, je ne sais toujours pas trĂšs bien ce que tout peut faire avec ce fichier, pour l'instant tu fais les choses suivantes :

  1. Pour vos propres emails (arrivée ou envoi automatique), il est important de terminer par un : sinon votre serveur devient fou.
  2. Pour un domaine spécifique, par exemple gmail.com, accédez au serveur relais 1 port 587.
  3. Pour tous les autres e-mails, utilisez * pour tout inclure.

Il y a plus de méthodes d'utilisation ici, mais je ne sais pas trop comment toutes les appliquer :
http://www.postfix.org/transport.5.html

Créez sasl_passwd avec le contenu suivant :

[relay server 2]:25  USERNAME:PASSWORD
[relay server 1]:587 USERNAME:PASSWORD

Explication:
Ici, l'important est de les faire correspondre à votre dossier de transport. Je comprends que cela sera utilisé par votre serveur pour s'authentifier lorsqu'il se rendra sur les serveurs relais.

Et enfin, copiez tous ces fichiers dans la routine /config de votre Docker.

Modifiez ensuite votre docker-compose.yml en ajoutant :

     - ./config/transport:/etc/postfix/transport
     - ./config/sasl_passwd:/etc/postfix/sasl_passwd

Maintenant, vous ĂȘtes prĂȘt Ă  partir ! (J'espĂšre)

Souhaitant que vous puissiez obtenir si vous avez besoin de séparer le serveur SMTP qui fait office de relais selon le destinataire comme moi.

Je souhaite aussi que quelqu'un puisse m'aider Ă  amĂ©liorer ce que j'ai fait et mĂȘme l'intĂ©grer dans l'Image, il pourrait sĂ»rement y avoir beaucoup de personnes intĂ©ressĂ©es.

@cottonthread Travail intĂ©ressant. MĂȘme si vous avez dit que c'Ă©tait sale, ajouteriez-vous une entrĂ©e de page wiki avec ce que vous avez expliquĂ© ici ?

Je suis sĂ»r qu'il s'agit d'un cas assez spĂ©cifique, et qu'il y a un cas valable Ă  faire pour vĂ©rifier les enregistrements PTR/rDNS. J'aimerais fermer ceci, mais votre contribution vaut certainement une page wiki. Je n'ai pas le temps (ni les connaissances pour le moment) de mettre en Ɠuvre ce que vous avez dit. Mais si vous rencontrez des problĂšmes, je voudrais pointer vers Contabo. Vous pouvez obtenir un VPS trĂšs bon marchĂ© suffisant pour un serveur de messagerie et vous pouvez dĂ©finir vous-mĂȘme les entrĂ©es rDNS.

Cette page vous a été utile?
0 / 5 - 0 notes