Courrier proxy vers un autre serveur smtp avec Postfix

11

Comment puis-je transférer (ou proxy) du courrier vers différents serveurs smtp en fonction de l'adresse À?

J'ai une machine avec un serveur SMTP (postfix) écoutant sur le port 25. Je veux utiliser Lamson ( http://lamsonproject.org/ ) pour gérer certains courriers entrants et certains courriers que je veux avoir postfix à gérer.

Mon idée est de configurer Lamson pour écouter sur un autre port, disons localhost: 10025. J'ai ensuite configuré postfix pour attraper tout le courrier en écoutant sur le port 25.

Comment configurer Postfix pour proxyer certains courriers vers Lamson sur 10025 et gérer tous les autres courriers lui-même?

Mattias
la source

Réponses:

18

Postfix est extrêmement flexible (et donc complexe) dans sa configuration, il existe donc plusieurs façons d'y parvenir. La manière la plus simple serait probablement d'utiliser une transport(5)table.

Tout d'abord, activez l'utilisation d'une table de transport dans postfix:

/etc/postfix/main.cf:
    transport_maps = hash:/etc/postfix/transport

Vous devrez également vous assurer que Postfix accepte les mails pour les adresses qui seront traitées par Lamson. Jetez un œil aux permit_auth_destinationrègles que Postfix appliquera pour déterminer les adresses de destinataires valides. Pour l'exemple suivant, en supposant que "example.com" est un domaine inconnu de Postfix, il est probablement plus simple de simplement l'ajouter en tant que domaine relais:

/etc/postfix/main.cf:
    relay_domains = example.com

Ensuite, créez une table appropriée. Par exemple, pour rediriger tout le courrier du domaine "example.com" ainsi que le courrier pour "[email protected]" vers votre écoute Lamson locale au port 10025:

/etc/postfix/transport:
    example.com          smtp:127.0.0.1:10025
    [email protected]    smtp:127.0.0.1:10025

Après cela (puis une fois après chaque mise à jour du fichier de la table de transport), n'oubliez pas d'exécuter:

$ postmap /etc/postfix/transport

Cela devrait vous permettre de continuer. Assurez-vous de lire la transport(5)page de manuel, qui vous donnera plus d'idées sur la façon d'utiliser cette puissante fonctionnalité.

comte
la source
Salut, merci pour l'astuce. J'ai toujours des problèmes pour faire suivre le courrier après avoir suivi vos instructions. J'obtiens NOQUEUE: rejet: RCPT de {mon-mail-relais} Adresse du destinataire rejetée: Utilisateur inconnu dans la table des destinataires locaux. Des idées?
Mattias
Ah oui, vous devrez également vous assurer que Postfix accepte que le courrier soit relayé vers example.com (car Postfix agit désormais comme relais pour Lamson). Si votre Postfix sert principalement un autre domaine, le moyen le plus simple d'y parvenir est d'ajouter le "domaine Lamson" à relay_domains. J'ai mis à jour pour répondre pour incorporer cela.
Earl
1
Merci, après avoir suivi vos étapes, j'avais toujours des problèmes pour que postfix reconnaisse localhost comme un hôte valide. J'ai exécuté la commande postconf -e 'smtp_host_lookup = dns, native' et cela a résolu mon problème, postfix envoie maintenant le courrier que je veux à Lamson.
Mattias
1
Heureux d'entendre que cela fonctionne. Au lieu de changer smtp_host_lookup, vous pouvez également utiliser 127.0.0.1au lieu de localhost. J'ai mis à jour la réponse pour tenir compte de cette amélioration.
Earl