1 votes

Utilisation conditionnelle de relay(smarthost) pour les domaines destinataires correspondant aux header_checks dans postfix

Sur un serveur de messagerie postfix, qui est configuré pour envoyer du courrier directement (site internet), je veux implémenter une vérification conditionnelle de l'en-tête pour certains domaines de réception (dans cet exemple, pour rester simple, juste avec gmail.com), pour laisser postfix utiliser un smarthost. Mais, au lieu de s'authentifier avec le smarthost smtp.google.com, il continue à envoyer les mails adressés à : *@gmail* directement (si je mets un mauvais mot de passe exprès, il ne s'en plaint pas).

J'ai créé les fichiers suivants dans /etc/postfix/ :

relay_passwd :

smtp.google.com mygmailaccount@gmail.com:mypassword

vérifications de l'en-tête :

^To: <*@gmail*>/ FILTER relay:smtp.gmail.com:25

et les référencer dans main.cf avec des options supplémentaires :

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/relay_passwd
header_checks = regexp:/etc/postfix/header_checks

maintenant j'ai postmappé les fichiers (et depuis, redémarré postfix aussi plusieurs fois) :

# postmap relay_passwd
# postmap header_checks

et il lance un avertissement :

postmap: warning: header_checks, line 1: record is in "key: value" format; is this an alias file?

Mais je suppose que ce n'est pas le problème, n'est-ce pas ? Quoi qu'il en soit, je dois faire quelque chose de mal.

J'ai trouvé les fils de discussion suivants, mais ils ne correspondent pas tout à fait à ce que je veux :

Utiliser un relais différent dans postfix

Relais conditionnel dans postfix

Différents relayhost postfix basés sur l'utilisateur du système ?

L'ordre dans main.cf est-il pertinent ? Le regexp dans header_checks est-il correct ?

0 votes

Regarder postfix.org/header_checks.5.html le format du header_checks doit être /pattern/flag action . Il manque le début de votre ligne / . De plus, l'expression régulière est incorrecte - * signifie "0 ou plusieurs occurrences du caractère/bloc précédent". La ligne devrait très probablement être /^To: .*<.*@gmail.*>/ FILTER relay:smtp.gmail.com:25 - noter les .* devant l'adresse électronique pour faire correspondre les noms. Il y a encore d'autres problèmes avec les expressions rationnelles (comme le fait qu'elles correspondent à l'adresse foo@gmailwhatever.tld), mais cela devrait être un bon début.

2voto

Jacob Evans Points 7455

Cela devrait faire l'affaire, votre configuration de relais semble correcte.

/^To: (.*?)@gmail.com$/ FILTER smtp:smtp.gmail.com

De plus, il n'est pas nécessaire de postmapper les fichiers regexp.

Fuente: Marcelog

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