Comment configurer sendmail pour relayer via un serveur spécifique

11

J'ai une toute petite configuration de serveur domestique derrière mon modem câble (communications bresnan). Je veux que cette boîte puisse envoyer des courriels (ne pas recevoir) pour les notifications et ainsi de suite.

Ce que j'ai déjà fait:

  • J'ai installé et configuré sendmail.
  • J'ai ajouté mail.bresnan.netcomme SMART_HOSTdirective.

Je crois que le problème est

Lorsque j'essaie d'envoyer un e-mail, je reçois les informations suivantes dans mon journal de messagerie:

Dec 22 10:24:17 batcave sendmail[1530]: oBMHOHrs001530: from=aburns, 
  size=140, class=0, nrcpts=1, 
  msgid=<[email protected]>, 
  relay=aburns@localhost
Dec 22 10:24:17 batcave sm-mta[1531]: oBMHOHWZ001531: from=<[email protected]>, 
  size=397, class=0, nrcpts=1,
  msgid=<[email protected]>,
  proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1]
Dec 22 10:24:17 batcave sendmail[1530]: oBMHOHrs001530:
  to=<[email protected]>, ctladdr=aburns (1000/1000),
  delay=00:00:00, xdelay=00:00:00, mailer=relay,
  pri=30140, relay=[127.0.0.1] [127.0.0.1],
  dsn=2.0.0, stat=Sent (oBMHOHWZ001531 Message accepted for delivery)
Dec 22 10:24:18 batcave sm-mta[1517]: oBMH9mVv001357:
  to=<[email protected]>, ctladdr=<[email protected]>
  (1000/1000), delay=00:14:30, xdelay=00:00:42, mailer=relay,
  pri=300339, relay=pmx0.bresnan.net. [69.145.248.1],
  dsn=4.0.0, stat=Deferred: Connection timed out with pmx0.bresnan.net.

Vous pouvez voir où le message est accepté pour la livraison par mon serveur sendmail, puis où il tente de le transmettre au serveur de bresnan et il expire.

Voilà où est ma question. Les lecteurs avertis remarqueront que ce pmx0.bresnan.netn'est pas ce que ma SMART_HOSTdirective a défini. Il s'agit du MXserveur (extérieur?) Du domaine bresnan.com/net. Apparemment, bresnan a son réseau configuré de sorte que vous ne pouvez pas accéder à ce serveur à partir de son propre réseau et que vous devez utiliser le mail.bresnan.netserveur (auquel je peux me connecter). Le problème est que je ne sais pas comment dire à sendmail d'utiliser ce serveur et non le domaine .

Ce que j'ai essayé

  • Définition d'une entrée d'hôtes pour que le serveur pmx0 pointe vers l'adresse IP de messagerie. Cela ne fonctionne pas, ce qui est logique car sendmail effectue évidemment une requête MX pour trouver le serveur qui retourne l'IP, donc il n'est jamais nécessaire de faire une résolution DNS `` normale '' pour que le fichier hosts ne soit jamais impliqué.

Le correctif (pour tout le courrier sortant):

Encore une fois, les accessoires vont à webmin (voir la note ci-dessous) pour m'aider à apprendre cela. Si vous entrez votre smarthost avec des crochets qui demande à sendmail de ne pas faire de recherche MX, alors: define('SMART_HOST','[69.145.248.18]')(Fix the quotes-> backticks) fonctionne en fait sans table de mailing.

Le correctif (pour des domaines spécifiques):

Comme indiqué ci-dessous, la configuration d'un mailertableest requise. Cependant, comme indiqué dans la page de manuel , cette fonctionnalité doit également être activée dans votre sendmail.mcfichier.

Notez également que l'itinéraire de l'expéditeur ne force pas sendmail à utiliser le serveur spécifié pour toutes les opérations, il est basé sur l'adresse du destinataire. C'est en fait OK pour moi car je n'ai qu'à envoyer à quelques domaines (gmail, hébergé par Google et mon travail).

Résumé :

  • Ajoutez FEATURE('mailertable')à votre sendmail.mcfichier. (notez que la première citation doit être un backtick.
  • Créez votre /etc/mail/mailertablefichier (voir la page de manuel )
  • Créez un fichier map: sudo makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
  • Reconstruisez vos configurations make -C /etc/mail
  • Redémarrez sendmail: service sendmail restart

REMARQUE: je recommande fortement d' utiliser WebMin pour modifier / reconstruire ces fichiers. Sans cela, je serais devenu fou en essayant de comprendre pourquoi mon fichier mailertable était ignoré.

ErebusBat
la source
Pouvons-nous voir votre sendmail.mc?
larsks
Lorsque vous avez apporté des modifications au fichier de configuration sendmail.mc, avez-vous redémarré sendmail après chaque modification?
ewwhite

Réponses:

7

Vous pouvez contourner la recherche MX en ajoutant une courte entrée dans votre /etc/mail/mailertablefichier sendmail .

Le contenu du fichier devrait probablement avoir une seule ligne comme:

bresnan.net       esmtp:[69.145.248.18]

Enregistrez le fichier et redémarrez sendmail (ou reconstruisez votre sendmail.cf si cela doit être fait manuellement).

ewwhite
la source
2
Votre réponse était correcte; cependant j'ai dû prendre des mesures supplémentaires. Pour les autres personnes rencontrant ce problème, voir ma modification ci-dessus.
ErebusBat