Exim4 Smart Host Relay

Je suis en train d'exécuter Exim 4.71. Je veux:

  1. Apathez tous les courriels de A.com par mail.A.com
  2. Apathez tous les e-mails de [BE] .com via mail.B.com
  3. Envoyez tout autre courriel directement.

Voici la configuration que j'ai qui ne fonctionne pas comme je l'espérais:

 domainlist a_domains = a.com
 domainlist b_domains = b.com: c.com: d.com: e.com

 commencer les routeurs

 smart_route_a:
   driver = manualroute
   domaines = + a_domains
   transport = remote_smtp
   route_list = + a_domains mail.a.com
   pas plus

 smart_route_b:
   driver = manualroute
   domaines = + b_domains
   transport = remote_smtp
   route_list = + b_domains mail.mollenhour.com
   pas plus

 Dnslookup:
   driver = dnslookup
   domaines =!  + local_domains
   transport = remote_smtp
   ignore_target_hosts = 0.0.0.0: 127.0.0.0/8
   pas plus

Lorsque j'envoie un courrier électronique, par exemple, avec le paramètre mail( ) ou Zend_Mail_Transport_Smtp à partir de: et Return-Path: comme user@a.com, le routeur smart_route_a n'est pas utilisé, le dnslookup est utilisé à la place. Désactiver les résultats dnslookup sans envoyer de courrier.

À partir des journaux, il apparaît que le courrier électronique envoyé à smart_route_a utilise smart_route_a , mais le même courriel envoyé de user@a.com à user@gmail.com est envoyé à l'aide de dnslookup .

Comment puis-je envoyer un courrier électronique à partir d'user@a.com par mail.a.com?

Utilisez un conditionnel comme

 route_list = * "${if match{$header_from:}{\N.*\.a\.com$\N} {mail.a.com}}" 

domains = vérifie uniquement le domaine de destination et non le domaine source.