Exim: modifier l'adresse de l'expéditeur lors de l'envoi de courriers hors du réseau local

8

Nous avons une configuration exim fonctionnelle sur un site, où les utilisateurs peuvent envoyer et recevoir des e-mails. Nous essayons de configurer un serveur pour envoyer des avertissements et des erreurs par e-mail à une adresse extérieure au réseau local.

Le problème est:

Le programme qui envoie les mails les envoie en utilisant le nom d'utilisateur sous lequel il s'exécute et le nom d'hôte local du serveur. Cela fait que les mails ont un expéditeur de format: [email protected]. Exim envoie ces e-mails au serveur SMTP du FAI, qui rejette les e-mails car ils ont un expéditeur illégal ou invérifiable (l'adresse interne).

Je pense que je devrais configurer exim pour réécrire l'expéditeur lorsque:

  • le domaine de l'expéditeur se trouve sur le réseau local
  • le domaine du récepteur est en dehors du réseau local

J'ai essayé de définir une sorte de réécriture dans la configuration d'exim, mais je n'ai pas réussi à le faire fonctionner. Je montrerais ce que j'ai essayé, mais j'ai manqué de temps lors de la dernière visite sur le site et j'ai dû revenir à la version originale en perdant toutes les modifications que j'ai essayées.

Esa Varemo
la source

Réponses:

9
begin rewrite
[email protected]   [email protected]   SFfrs

Les drapeaux ont les significations suivantes:

  1. S - Effectue toute la réécriture au moment SMTP. Cela signifie que tous les indicateurs suivants sont effectués immédiatement lorsque les données auxquelles ils s'appliquent arrivent, et ne sont pas retardés plus tard.
  2. F - Réécrivez l'enveloppe du champ.
  3. f - Réécrivez le champ d'en-tête From :.
  4. r - Réécrivez le champ d'en-tête Reply-To :.
  5. s - Réécrivez le champ d'en-tête Sender-To :.

Lisez le chapitre 31 de la spécification Exim pour plus de détails sur la réécriture des messages

Kondybas
la source
1
C'est comme ça que je l'ai fait fonctionner, sauf: Il doit y avoir un ^au début de la règle, comme Sexcepte une expression
régulière
1
s devrait être " Sender:" en-tête pas " Sender-To:" (Et c'est un changement trop minuscule pour éditer le post)
Gert van den Berg
11

Le fichier /etc/email-addressesdoit gérer le problème. Il s'agit d'une partie standard de la distribution Exim. Vous devrez configurer un enregistrement pour chaque utilisateur local envoyant un e-mail.

Essayez une ligne à /etc/email-addressesaimer:

 myapp:   [email protected]

Sur votre serveur MX, ajoutez un alias comme:

 donotreply:    :blackhole:

Utilisez un en- Reply-to:tête pour permettre au destinataire de répondre au message.

Le fichier /etc/email-addressesest utilisé avec le code de réécriture suivant, qui doit être au début de la rewritesection du fichier de configuration.

*@+local_domains "${lookup{${local_part}}lsearch{/etc/email-addresses}\
                  {$value}fail}" Ffrs
BillThor
la source
/etc/email-addressesn'existe pas sur mon serveur. Puis-je simplement le créer, ou cela indique-t-il qu'il manque quelque chose?
Esa Varemo
@EsaVaremo Grep votre fichier de configuration pour email-addresses, ou vérifiez votre fichier de configuration pour la section de réécriture. Il est possible que cela n'ait pas été configuré dans votre distribution.
BillThor
J'ai essayé grep, locateet regardé quelques man-pages, mais n'a pas trouvé quoi que ce soit. Le fichier doit-il être défini dans exim.conf?
Esa Varemo
@EsaVaremo La ligne à la fin de ma réponse devrait être dans la section de réécriture de exim.conf. S'il manque, ajoutez-le. Assurez-vous que la variable local_domainsinclut votre domaine.
BillThor du
J'ai remarqué votre modification un moment après avoir fait mon dernier commentaire. Pour quelque raison que ce soit, je n'ai pas réussi à le faire fonctionner, alors je suis allé avec l'autre réponse, car je manquais de temps. Je ne doute pas que ce soit vrai, je viens juste d'avoir mal tapé / configuré quelque chose ...
Esa Varemo
1

/etc/email-addressesest pratique lorsque vous ne devez associer qu'une seule adresse e-mail par nom d'utilisateur. Cependant, si votre utilisateur doit envoyer des e-mails avec plusieurs adresses, vous devrez modifier à /etc/email-addresseschaque fois et vous finirez inévitablement par utiliser la mauvaise adresse.

Une autre approche consiste à envoyer l'e-mail à l'aide de la exim4commande et de son -foption:

$ cat email|/usr/sbin/exim4 -f [email protected] [email protected]

Notez que pour que l' -foption fonctionne, vous devez soit que votre utilisateur soit dans les utilisateurs de confiance d'exim, soit que exim doit l'accepter comme expéditeur non autorisé autorisé.

Dans mon cas, ce dernier était par défaut, grâce à ce caractère générique dans /etc/exim4/conf.d/main/02_exim4-config_options :

untrusted_set_sender = *

L'autre solution consiste à ajouter la ligne suivante /etc/exim4/conf.d/main/00_local_settings(en supposant la configuration divisée d'exim et à la créer si elle n'existe pas déjà):

MAIN_TRUSTED_USERS = yourusername

Les deux options nécessitent un rechargement de la configuration d'exim. Sous Debian:

# dpkg-reconfigure exim4-config
Skippy le Grand Gourou
la source