Wie konfiguriere ich Sendmail, um E-Mails über den MX-Eintrag und nicht an den lokalen Host zu senden?

Wie konfiguriere ich Sendmail, um E-Mails über den MX-Eintrag und nicht an den lokalen Host zu senden?

Ich versuche, sendmail dazu zu bringen, Mails an die in den MX-Einträgen angegebenen Server zu übertragen, so dass, wenn der Server eine E-Mail an[email geschützt]Ich möchte, dass der lokale Host übersprungen wird und direkt zu Gmail geht.

Ich habe die Sendmail-Dokumente durchgesehen, verstehe aber nicht ganz, wie ich meine Situation erklären soll. Im Wesentlichen ist der Hostname meines Servers „www.domain.com“, aber wenn ich eine E-Mail an „[email geschützt]', landet es im lokalen Mail-Spool.

Wenn ich Sendmail im Debugmodus ausführe:

sendmail -bt
> $=w

Ich bekomme:

www.domain.com
www.domain.com.
domain.com
localhost
[54.245.___.___] 

Es fängt also alle ausgehenden E-Mails ab domain.com. Ich möchte nicht, dass sie bei ankommen localhost. Ich möchte, dass sie an die Gmail-Server gehen.

Alle an andere Adressen gerichteten E-Mails funktionieren einwandfrei. Ich habe sendmail auch für die Verwendung von DKIM konfiguriert.

Ich habe einen Datensatz zu Mailertable hinzugefügt (und mailertable.db neu erstellt und die Datei mc>cf neu kompiliert), aber ich bin nicht sicher, ob ich das tun muss und ob ich es richtig mache.

domain.com esmtp:[aspmx.l.google.com]

Wie kann ich erreichen, dass E-Mails für[email geschützt]den Server verlassen?

ZUSÄTZLICHE INFORMATIONEN: Hier ist meine sendmail.mc-Datei:

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

Antwort1

Ich habe endlich eine ziemlich umfassende Lösung gefundenHier. Zusammenfassend lässt sich sagen, dass es eine Reihe von Optionen gibt (die meisten davon wurden in anderen Antworten erwähnt, haben aber aus irgendeinem Grund in meinem speziellen Szenario nicht funktioniert).

Option 1:Entfernen Sie den Eintrag aus /etc/mail/local-host-names

bei mir war diese Datei schon leer

Option 2:Entfernen Sie alle LOCAL_DOMAIN-Einträge in der MC-Datei

ich hatte keine

Option 3:Sagen Sie sendmail, dass es Schnittstellen nicht prüfen soll

define(`confDONT_PROBE_INTERFACES', `true')dnl

in meinem Fall war dies eingestellt, dennoch war der problematische Host immer noch in der Klasse w von Sendmail vorhanden

Option 4:Benennen Sie den Server um. Der oben angegebene externe Link besagt sogar ausdrücklich: „Wenn ich whipple.org aus der Klasse w entfernen möchte, könnte ich den Server beispielsweise in frodo.whipple.org, www.whipple.org, elvis.whipple.org umbenennen.“

für mich war das nicht ausreichend. mit dem Host namenswww.domain.com, sendmails-Klasse w enthielt immer noch SOWOHL www.domain.com als auch domain.com (sogar nach einem Neustart)

Option 5: DAS HAT BEI MIR FUNKTIONIERTFügen Sie der Sendmail-MC-Datei eine LOCAL_RULE_0 hinzu

LOCAL_RULESETS
LOCAL_RULE_0
R$* < @domain.com. > $*  <tab>$#esmtp $@ mail.domain.com $: $1<@domain.com.>$2

Dies muss am Ende der Datei stehen und <tab>muss ein echtes Tabulatorzeichen sein

Antwort2

Ändern Sie den Hostnamen des Servers. Es gibt keinen gültigen Grund dafür, dass ein Hostname jemals einem reinen Domänennamen entsprechen sollte.

Antwort3

So verstehe ich Ihre Frage:

  1. Sie haben Sendmail installiert, damit Sie damit E-Mails von Ihrer Website senden können.

  2. Sie haben Sendmail als autoritativen E-Mail-Server für Ihren öffentlichen DNS-Namespace konfiguriert.

  3. Sie möchten nicht, dass Sendmail für Ihren öffentlichen DNS-Namespace maßgebend ist. Sie möchten, dass an Ihren öffentlichen DNS-Namespace gesendete E-Mails an Ihre von Google gehostete E-Mail-Adresse gesendet werden.

Lösung: Konfigurieren Sie Sendmail neu, sodass es für Ihren öffentlichen DNS-Namespace nicht autoritativ ist.

Antwort4

1) Sendmail füllt automatisch die Liste der lokalen E-Mail-Domänen ( $=w).

Sie können es nicht mit der folgenden Zeile in Ihrer sendmail.mc deaktivieren:

define(`confDONT_PROBE_INTERFACES',`True')

Sie können lokale E-Mails „manuell“ in /etc/mail/local-host-namesdie Datei einfügen.
(Dazu ist HUPing oder ein Neustart des Sendmail-Daemons erforderlich.)

2) Sendmail kann (automatisch konfiguriert) „diesen Host-E-Mail-Namen“ ( $j) zur Liste der lokalen E-Mail-Domänen hinzufügen.

Sie können „diesen Host-E-Mail-Namen“ definieren

define(`confDOMAIN_NAME',`hostname.example.net')

3) mailertableistNICHTkonsultiert für Lieferungen an in aufgeführte Domänen $=w.

verwandte Informationen