J'essaie d'obtenir sendmail pour transférer des e-mails vers les serveurs spécifiés dans les enregistrements MX, donc lorsque le serveur envoie un e-mail à [email protected], je veux qu'il ignore localhost et passe directement à gmail.
J'ai parcouru les documents sendmail, mais je ne comprends pas très bien comment prendre en compte ma situation. Essentiellement, le nom d'hôte de mon serveur est «www.domain.com», mais lorsque j'envoie un e-mail à «[email protected]», il se retrouve dans la bobine de messagerie locale.
Lorsque j'exécute sendmail en mode débogage:
sendmail -bt
> $=w
Je reçois:
www.domain.com
www.domain.com.
domain.com
localhost
[54.245.___.___]
Donc, il intercepte tout le courrier sortant vers domain.com
. Je ne veux pas que ça arrive localhost
. Je veux qu'il aille sur les serveurs gmail.
Tout le courrier destiné à d'autres adresses fonctionne correctement. J'ai également sendmail configuré pour utiliser DKIM.
J'ai ajouté un enregistrement à mailertable (et reconstruit le mailertable.db et recompilé le fichier mc> cf) mais je ne sais pas si c'est ce que je dois faire ou si je le fais correctement.
domain.com esmtp:[aspmx.l.google.com]
Comment puis-je l'obtenir pour autoriser le courrier à destination de [email protected] à quitter le serveur?
INFORMATION ADDITIONNELLE: Voici mon fichier sendmail.mc:
divert(-1)dnl
include(`/usr/share/sendmail-cf/m4/cf.m4')dnl
VERSIONID(`setup for linux')dnl
OSTYPE(`linux')dnl
define(`confDEF_USER_ID', ``8:12'')dnl
define(`confTO_CONNECT', `1m')dnl
define(`confTRY_NULL_MX_LIST', `True')dnl
define(`confDONT_PROBE_INTERFACES', `True')dnl
define(`PROCMAIL_MAILER_PATH', `/usr/bin/procmail')dnl
define(`ALIAS_FILE', `/etc/aliases')dnl
define(`STATUS_FILE', `/var/log/mail/statistics')dnl
define(`UUCP_MAILER_MAX', `2000000')dnl
define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl
define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl
define(`confAUTH_OPTIONS', `A')dnl
define(`confTO_IDENT', `0')dnl
FEATURE(`no_default_msa', `dnl')dnl
FEATURE(`smrsh', `/usr/sbin/smrsh')dnl
FEATURE(`mailertable', `hash -o /etc/mail/mailertable.db')dnl
FEATURE(`virtusertable', `hash -o /etc/mail/virtusertable.db')dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(use_ct_file)dnl
FEATURE(local_procmail, `', `procmail -t -Y -a $h -d $u')dnl
FEATURE(`access_db', `hash -T<TMPF> -o /etc/mail/access.db')dnl
FEATURE(`blacklist_recipients')dnl
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
FEATURE(`accept_unresolvable_domains')dnl
FEATURE(`relay_based_on_MX')dnl
FEATURE(`relay_entire_domain')dnl
LOCAL_DOMAIN(`localhost.localdomain')dnl
MASQUERADE_AS(`domain.com')dnl
MASQUERADE_DOMAIN(`localhost.localdomain')dnl
EXPOSED_USER(`root')dnl
FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl
INPUT_MAIL_FILTER(`opendkim', `S=inet:8891@localhost')
MAILER(smtp)dnl
MAILER(procmail)dnl
Réponses:
J'ai finalement trouvé ici une solution assez globale . Pour résumer, il existe un certain nombre d'options (dont la plupart ont été mentionnées dans d'autres réponses, mais pour des raisons qui n'ont pas fonctionné dans mon scénario particulier).
Option 1: supprimez l'entrée de / etc / mail / local-host-names
pour moi ce fichier était déjà vide
Option 2: supprimez toute entrée LOCAL_DOMAIN du fichier mc
je n'en avais pas
Option 3: dites à sendmail de ne pas sonder les interfaces
dans mon cas, cela a été défini, mais l'hôte problématique était toujours présent dans la classe w de sendmail
Option 4: renommer le serveur. le lien externe fourni ci-dessus dit même spécifiquement: "Si je veux supprimer whipple.org de la classe w, je pourrais renommer le serveur en frodo.whipple.org, www.whipple.org, elvis.whipple.org, par exemple."
pour moi, ce n'était pas suffisant. avec l'hôte nommé www.domain.com , la classe sendmails contenait toujours les deux www.domain.com ET domain.com (même après un redémarrage)
Option 5: C'EST CE QUI A FONCTIONNÉ POUR MOI ajoutez un LOCAL_RULE_0 au fichier mc sendmail
cela doit aller à la fin du fichier et
<tab>
doit être un caractère de tabulation réella source
bestmx
carte pour la rendre générique.Modifiez le nom d'hôte du serveur. Il n'y a aucune raison valable pour qu'un nom d'hôte soit égal à un nom de domaine nu.
la source
Voici ma compréhension de votre question:
Vous avez installé Sendmail afin de pouvoir l'utiliser pour envoyer des e-mails depuis votre site Web.
Vous avez configuré Sendmail pour être le serveur de messagerie faisant autorité pour votre espace de noms DNS public.
Vous ne voulez pas que Sendmail fasse autorité pour votre espace de noms DNS public. Vous souhaitez que les e-mails envoyés à votre espace de noms DNS public soient envoyés à votre messagerie hébergée par Google.
Solution: reconfigurez Sendmail afin qu'il ne fasse pas autorité pour votre espace de noms DNS public.
la source
Je ne suis pas trop expérimenté avec la configuration de sendmail, mais je pense que cela devrait faire la bonne chose en ce qui concerne les enregistrements MX. Cependant, j'imagine qu'il pourrait être possible que dans la priorité des recherches DNS, sendmail consulte d'abord le fichier des hôtes locaux
/etc/hosts
sur la plupart des systèmes d'exploitation basés sur Unix avant d'utiliser ses serveurs DNS. Si tel est le cas, et qu'il y a une entrée dans le fichier hosts qui fait référence à votre machine en tant que domaine.com si vous le définissez comme nom d'hôte, cela pourrait être ce qui se passe. Vous pouvez modifier le fichier hosts pour l'adapter à vos besoins dans ce cas particulier en modifiant les entrées ou en en ajoutant de nouvelles.Ou vous pouvez configurer sendmail pour ignorer le fichier d'hôtes système local lors de la résolution des URL. Je ne sais pas comment faire ça.
la source
1) Sendmail remplit automatiquement la liste des domaines de messagerie locaux (
$=w
).Vous ne pouvez pas le désactiver en utilisant la ligne suivante dans votre sendmail.mc:
Vous pouvez ajouter des e-mails locaux "manuellement" dans le
/etc/mail/local-host-names
fichier.(Il nécessite HUPing ou redémarrage du démon sendmail après)
2) Sendmail peut ajouter (configuré automatiquement) "ce nom de messagerie de l'hôte" (
$j
) à la liste des domaines de messagerie locaux.Vous pouvez définir "ce nom de messagerie de l'hôte"
3)
mailertable
n'est PAS consultée pour les livraisons aux domaines énumérés dans$=w
.la source
confDONT_PROBE_INTERFACES',
True ') est déjà (et a toujours été) activéLe code qui envoie le courrier, utilisez-vous une adresse e-mail complète ou faites-vous simplement envoyer le courrier par le serveur via un compte local? Parce que:
Cela indique à sendmail de livrer tout le courrier à [email protected] localement
Et cela indique à sendmail de réécrire les domaines dans les adresses locales sur domain.com, mais ne modifie pas la livraison locale .
Étape 1: revenez à la configuration par défaut.
Étape 2: utilisez la configuration par défaut.
la source