ローカルホストではなく MX レコード経由でメールを送信するように sendmail を設定するにはどうすればよいですか?

ローカルホストではなく MX レコード経由でメールを送信するように sendmail を設定するにはどうすればよいですか?

私はsendmailにMXレコードで指定されたサーバーにメールを転送させようとしています。サーバーがメールを送信すると[メールアドレス]localhost をスキップして、直接 Gmail に移動したいです。

sendmailのドキュメントを読んだのですが、私の状況を説明する方法がわかりません。基本的に私のサーバーのホスト名は「www.domain.com」ですが、「[メールアドレス]' ローカルのメールスプールに保存されます。

sendmail をデバッグモードで実行すると:

sendmail -bt
> $=w

次のような結果になります:

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

つまり、 へのすべての送信メールが傍受されますdomain.com。 に届くのは望ましくありませんlocalhost。 Gmail サーバーに送信されるようにします。

他のアドレス宛てのメールはすべて正常に動作します。また、DKIM を使用するように sendmail を設定しました。

mailertable にレコードを追加しました (mailertable.db を再構築し、mc>cf ファイルを再コンパイルしました) が、それが必要なことなのか、正しく実行できているのかわかりません。

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

どうすればメールの宛先を許可できますか?[メールアドレス]サーバーを離れるには?

追加情報: これが私の 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

答え1

ようやく包括的な解決策を見つけましたここ要約すると、いくつかのオプションがあります (そのほとんどは他の回答で言及されていますが、何らかの理由で私の特定のシナリオでは機能しませんでした)。

オプション1:/etc/mail/local-host-names からエントリを削除します。

私にとってこのファイルはすでに空でした

オプション2:mcファイル内のLOCAL_DOMAINエントリを削除します。

私は何も持っていなかった

オプション3:sendmail にインターフェースをプローブしないように指示する

define(`confDONT_PROBE_INTERFACES', `true')dnl

私の場合、これは設定されていましたが、問題のあるホストはsendmailのクラスwにまだ存在していました。

オプション4:サーバーの名前を変更します。上記の外部リンクには、「クラス w から whipple.org を削除する場合は、サーバーの名前を frodo.whipple.org、www.whipple.org、elvis.whipple.org などに変更することができます」と明記されています。

私にとってはこれでは不十分でした。www.domain.comsendmails クラス w には、www.domain.com と domain.com の両方がまだ含まれています (再起動後でも)

オプション5: これが私にとって効果的だった方法sendmail mc ファイルに LOCAL_RULE_0 を追加する

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

これはファイルの末尾に配置する必要があり、<tab>実際のタブ文字である必要があります。

答え2

サーバーのホスト名を変更します。ホスト名がドメイン名と同じになる正当な理由はありません。

答え3

あなたの質問に対する私の理解は次のとおりです:

  1. ウェブサイトから電子メールを送信するために Sendmail をインストールしました。

  2. Sendmail をパブリック DNS 名前空間の権限のある電子メール サーバーとして構成しました。

  3. Sendmail をパブリック DNS 名前空間の権限を持つメールとして設定する必要はありません。パブリック DNS 名前空間に送信されたメールを Google がホストするメールに送信する必要があります。

解決策: Sendmail を再構成して、パブリック DNS 名前空間に対して権限を持たないようにします。

答え4

1) Sendmail はローカル電子メールドメインのリストを自動的に入力します ( $=w)。

sendmail.mc で次の行を使用してこれをオフにすることはできません。

define(`confDONT_PROBE_INTERFACES',`True')

/etc/mail/local-host-namesファイルにローカルメールを「手動で」追加できます。
(その後、HUP を実行するか、sendmail デーモンを再起動する必要があります)

2) Sendmail は、(自動設定された)「このホストの電子メール名」( $j) をローカル電子メール ドメインのリストに追加する場合があります。

「このホストのメール名」を定義できます

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

3)mailertableないに記載されているドメインへの配信については、 を参照してください$=w

関連情報