私は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
あなたの質問に対する私の理解は次のとおりです:
ウェブサイトから電子メールを送信するために Sendmail をインストールしました。
Sendmail をパブリック DNS 名前空間の権限のある電子メール サーバーとして構成しました。
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
。