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.net
commeSMART_HOST
directive.
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.net
n'est pas ce que ma SMART_HOST
directive a défini. Il s'agit du MX
serveur (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.net
serveur (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 mailertable
est requise. Cependant, comme indiqué dans la page de manuel , cette fonctionnalité doit également être activée dans votre sendmail.mc
fichier.
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')
à votresendmail.mc
fichier. (notez que la première citation doit être un backtick. - Créez votre
/etc/mail/mailertable
fichier (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é.
Réponses:
Vous pouvez contourner la recherche MX en ajoutant une courte entrée dans votre
/etc/mail/mailertable
fichier sendmail .Le contenu du fichier devrait probablement avoir une seule ligne comme:
Enregistrez le fichier et redémarrez sendmail (ou reconstruisez votre sendmail.cf si cela doit être fait manuellement).
la source