11 votes

Hôte de relais basé sur l'enregistrement MX de destination

Je souhaite configurer Postfix pour qu'il utilise un relais externe en fonction du nom d'hôte de destination, par exemple :

  • Si le nom d'hôte de destination est *.outlook.com, utilisez le relais some_smtp.example.com.
  • Si tout autre nom d'hôte de destination, utiliser le relais local.

Ce que j'entends par nom d'hôte de destination est le nom d'hôte obtenu à partir de l'enregistrement MX. Si le domaine destinataire a un enregistrement MX microsoft-com.mail.protection.outlook.com alors utilisez un autre relais

Je sais qu'il est possible de spécifier un relais en fonction de l'adresse de l'expéditeur (à l'aide de sender_dependent_relayhost_maps ), mais c'est peu pratique dans ma situation.

L'objectif est d'utiliser un autre relais pour les hôtes de destination difficiles : peut-être Mandrill, ou une autre installation Postfix.

7voto

Arul Selvan Points 1338

Vous pouvez configurer une carte de transport pour choisir sélectivement les mails avec @outlook.com comme adresse de destination et les relayer via some_smtp.example.com comme indiqué ci-dessous.

Ajoutez l'entrée ci-dessous à /etc/postfix/transport

outlook.com smtp:[some_smtp.example.com]

Ajoutez l'entrée ci-dessous à /etc/postfix/main.cf

transport_maps = hash:/etc/postfix/transport

Redémarrez postfix après la commande suivante

sudo postmap /etc/postfix/transport

7voto

masegaloeh Points 17760

Réponse d'Arul était parfait pour le transport basé sur le domaine du destinataire. Cependant, si vous faites référence au nom d'hôte de l'enregistrement MX au lieu du domaine du destinataire, la réponse n'est pas applicable.

Une solution consiste à utiliser check_recipient_mx_access . Extrait de documents officiels

vérification de l'accès du destinataire à la messagerie type:table

Recherchez le base de données access(5) spécifiée pour les hôtes MX du domaine RCPT TO et exécuter l'action correspondante. Remarque : un résultat de "OK" n'est pas autorisé pour des raisons de sécurité. Utilisez plutôt DUNNO afin d'exclure des hôtes spécifiques des listes noires. Cette fonctionnalité est disponible à partir de la version 2.1 de Postfix.

Dans votre cas, il suffit de mettre check_recipient_mx_access hash:/etc/postfix/finickydestination à l'endroit approprié smtpd_*_restriction . Dans ce fichier, mettez le nom d'hôte

# /etc/postfix/finickydestination
.outlook.com FILTER smtp:[some_smtp.example.com]

N'oubliez pas de postmapper le fichier et d'exécuter postfix reload.

Référence(s) :

2voto

Aaron Cornwell Points 31

Comme l'a souligné @user221326 (je n'ai pas assez de rep pour commenter moi-même), la réponse de @masegaloeh est la suivante NO travailler comme check_recipient_mx_access s'attend à ce qu'un table d'accès avec un ACTION

Plus d'informations dans le page de manuel

L'action que vous voulez est FILTER donc quelque chose comme

.outlook.com FILTER smtp:[some_smtp.example.com]

Notez que si vous avez plusieurs FILTER seul le dernier tire, donc assurez-vous qu'il vient après tout le reste.

En outre, .outlook.com n'attrapera que les sous/super domaines (par exemple, whatever.protection.outlook.com) si smtpd_access_maps es NO en parent_domain_matches_subdomains sinon vous voulez outlook.com (sans point de départ)

Enfin, gardez à l'esprit que cette action s'applique à l'ensemble de l'UE. message complet dès qu'un destinataire MX correspond au domaine, ce qui ne devrait pas poser de problème tant que votre cible définie n'est pas un MDA.

Cheers

1voto

Nick Points 736

Mise à jour de 2021

J'ai essayé tout cela, mais cela ne semble pas fonctionner. La solution que je présente a été "assemblée" à partir de plusieurs sources.


sur main.cf vous devez ajouter ce qui suit :

smtpd_sender_restrictions   =
        check_recipient_mx_access   pcre:/etc/postfix/mxtransport

alors vous faites /etc/postfix/mxtransport comme "d'habitude" :

/google\.com$/              FILTER smtp:[smtp.com]:25
/googlemail\.com$/          FILTER smtp:[smtp.com]:25
/protection\.outlook\.com$/ FILTER smtp:[smtp.com]:25

/spamexperts\.com$/         FILTER smtp:[smtp.com]:25
/spamexperts\.net$/         FILTER smtp:[smtp.com]:25
/spamexperts\.eu$/          FILTER smtp:[smtp.com]:25

Cela garantit que les courriels envoyés aux clients de google / outlook / spamexperts (par exemple something@google.com, something@hotmail.com, something@tui.de etc), passeront par la route d'un tiers (smtp.com) au lieu de passer par l'IP locale.


J'utilise toujours Postfix 2.10.1 (CentOS 7).

0voto

Patrick Domack Points 1

Comme indiqué ci-dessus : "Pour votre cas, il suffit de mettre check_recipient_mx_access hash:/etc/postfix/finickydestination à l'endroit approprié smtpd_*_restriction. Dans ce fichier, mettez le nom d'hôte"

smtpd_sender_restrictions n'est pas l'endroit approprié, car au moment de la transaction smtp, postfix ne sait pas qui est le destinataire.

De même, si vous aviez d'autres déclarations FILTER, comme l'analyse des spams/virus, elles remplaceraient ces déclarations FILTER, si elles se produisaient après les restrictions smtpd_sender_restrictions.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X