4 votes

Configuration d'exim4 avec le démon SRS

J'ai du mal à configurer exim 4 avec un démon SRS externe (paquet Debian srs). Le srsd fonctionne et convertit les adresses en amont et en aval sans problème. Je ne peux pas utiliser le code srs intégré à exim, car il n'est pas activé dans Debian (je sais que je peux le compiler moi-même, mais ce n'est pas une option).

Ce qui me pose problème, c'est le routeur srs_forward d'exim qui permet d'ajouter des balises SRS aux mails transférés. J'ai mis en place le routeur de redirection suivant, qui ne devrait fonctionner que pour les messages non erronés provenant d'expéditeurs et de destinataires non locaux, qui ne sont pas relayés pour un autre mx - du moins, je comprends que srs s'applique à ces messages. Merci de me corriger si je me trompe. J'ai le code suivant :

srs_forward:
  debug_print = "R: srs_forward for $local_part@$domain"
  driver = redirect
  senders = ! :
  condition = ${if ! match_domain{$sender_address_domain}{+local_domains}}
  domains = ! +local_domains : ! +relay_to_domains
  address_data = ${readsocket{/tmp/srsd}\
                {FORWARD $sender_address_local_part@$sender_address_domain $domain\n}\
                                        {5s}{\n}{:defer: SRS daemon failure}}
  errors_to = ${quote_local_part:${local_part:$address_data}}@${domain:$address_data}
  data = ${quote_local_part:$local_part}@$domain
  headers_add = X-SRS: Sender address rewritten from $sender_address to ${quote_local_part:${local_part:$address_data}}@$$
  repeat_use = false
  allow_defer
  no_verify

Ce que j'ai pu tester et qui fonctionne : Le chemin de retour est généré correctement (lignes avec address_data et errors_to, ainsi que l'adresse de destination (ligne commençant par data).

Je ne suis pas sûr des conditions préalables :

senders = ! : 

Cette ligne devrait empêcher le routeur d'afficher des messages d'erreur.

condition = ${if ! match_domain{$sender_address_domain}{+local_domains}}

Cette ligne doit empêcher le routeur de rechercher des messages provenant d'expéditeurs locaux.

domains = ! +local_domains : ! +relay_to_domains

Cette ligne doit empêcher le routeur de fonctionner pour les messages destinés à des destinataires locaux ou pour les messages relayés.

Quelqu'un pourrait-il clarifier la situation ?

(J'ai utilisé un manuel comme point de départ, mais sans succès).

0voto

Adrian Zaugg Points 356

Vous n'avez pas effectué le test correctement. Les informations que vous transmettez au démon SRS ne sont pas correctes :

FORWARD $sender_address_local_part@$sender_address_domain $domain\n

Cela ne fait pas ce que vous voulez : $domain contient le domaine du destinataire et non celui de l'expéditeur. Votre intention de réécrire le chemin de retour vers le domaine par lequel le message a été transmis est honorable mais ne fonctionne pas de cette manière : Le message arrive à votre routeur SRS après le transfert a déjà été effectué, donc $domain ne contient plus le domaine auquel le message a été envoyé. Vous devez utiliser $primary_hostname ou $original_domain. Cette ligne devrait donc ressembler à ceci :

address_data = ${readsocket{/tmp/srsd}\
                {FORWARD $sender_address_local_part@$sender_address_domain $original_domain\n}\
                                    {5s}{\n}{:defer: SRS daemon failure}}

En ce qui concerne vos conditions préalables, elles sont bonnes. Vous pouvez prendre les lignes "senders" et "condition" ensemble :

senders = ! : ! *@+local_domains

Vous devez juste vous assurer que la liste de domaines local_domains contient vraiment tous vos domaines locaux (au moins elle devrait contenir pour le message actuellement routé $original_domain et $sender_address_domain).

Veuillez documenter votre configuration si votre code fonctionne et donnez-nous des indications ici. Vous avez besoin d'arranger plusieurs choses en plus : ACLs pour vérifier les messages de rebond étiquetés SRS entrants, supprimer les messages étiquetés SRS pour le greylisting, supprimer les rebonds, en s'assurant de ne pas ajouter d'autres étiquettes comme BATV aux messages sortants, contourner le problème pour accepter les messages étiquetés SRS avec un boîtier écrasé, réécrire le texte du message d'erreur de rebond pour ne pas inclure l'adresse de l'expéditeur étiqueté SRS, peut-être refuser tous les rebonds non étiquetés, etc. Un bon tutoriel serait donc le bienvenu. Merci d'avance !

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