dovecot と postgresql を使用して仮想ユーザー用に exim4 を構成していますが、解決できない問題が発生しました。状況は次のとおりです。
「localdomain」ユーザーが別の「localdomain」ユーザーまたは外部ユーザーに電子メールを送信しようとすると、認証が必要になり、そうでない場合は操作を拒否する必要があります。
実際には、あらゆるタイプの smtp オープン リレーを回避しようとしています。
実際にはsmtpは正常に動作し、その要件を設定するだけで、この動作を取得するためにeximを正しく構成する正しい方法が見つかりません(aclまたはルートまたはトランスポートルールですか?)
この構成を定義するにはどうすればよいですか?
例:
220 my-server ESMTP Exim 4.84 2016 年 3 月 31 日 22:26:28 +0000 ローカルホスト 250-my-server こんにちは localhost [192.168.1.X] 250サイズ 52428800 250-8BITMIME 250-パイプライン 250 認証プレーン ログイン 250ヘルプ メールアドレス: a@my-server.com 250OK 受信者: b@my-server.com 250 受け入れ データ 354 「.」で終わるメッセージを入力してください。単独で行に ユーザー「a@my-server.com」は認証されていません。 彼は使用するまでまだメッセージを送信できてはなりません はローカル ドメインのユーザーであるため、「auth login」または「auth plain」の . 250 OK id=1all3Q-0004l2-V4
例 2
220 my-server ESMTP Exim 4.84 2016 年 3 月 31 日 22:58:56 +0000 ローカルホスト 250-my-server こんにちは localhost [192.168.1.X] 250サイズ 52428800 250-8BITMIME 250-パイプライン 250 認証プレーン ログイン 250ヘルプ メールアドレス: a@anotherserver.com 250OK 受信者: user@my-server.com 250 受け入れ データ 354 「.」で終わるメッセージを入力してください。単独で行に これはすでに有効です。 . 250 OK id=1allZR-00050E-Sq
ACL 構成ファイル:
acl_check_rcpt:
受け入れる
ホスト = :
制御 = dkim_disable_verify
.ifdef CHECK_RCPT_LOCAL_LOCALPARTS
拒否
ドメイン = +local_domains
local_parts = CHECK_RCPT_LOCAL_LOCALPARTS
message = アドレスの制限文字
.endif
拒否
ドメイン = !+local_domains
local_parts = CHECK_RCPT_REMOTE_LOCALPARTS
message = アドレスの制限文字
.endif
受け入れる
.ifndef CHECK_RCPT_POSTMASTER
local_parts = ポストマスター
。そうしないと
local_parts = CHECK_RCPT_POSTMASTER
.endif
ドメイン = +local_domains : +relay_to_domains
.ifdef CHECK_RCPT_VERIFY_SENDER
拒否
メッセージ = 失敗しました!
!acl = acl_local_deny_exceptions
!verify = 送信者
.endif
拒否
!acl = acl_local_deny_exceptions
送信者 = ${存在する場合{CONFDIR/local_sender_callout}\
{CONFDIR/local_sender_callout}\
{}}
!verify = 送信者/コールアウト
受け入れる
ホスト = +relay_from_hosts
制御 = 送信/送信者_保持
制御 = dkim_disable_verify
受け入れる
認証済み = *
制御 = 送信/送信者_保持
制御 = dkim_disable_verify
必要とする
メッセージ = リレーが拒否されました!
ドメイン = +local_domains : +relay_to_domains
必要とする
検証 = 受信者
拒否
!acl = acl_local_deny_exceptions
受信者 = ${存在する場合{CONFDIR/local_rcpt_callout}\
{CONFDIR/local_rcpt_callout}\
{}}
!verify = 受信者/コールアウト
拒否
message = 送信者のエンベロープ アドレス $sender_address はローカルでブラックリストに登録されています。これが間違っていると思われる場合は、postmaster に連絡してください
!acl = acl_local_deny_exceptions
送信者 = ${存在する場合{CONFDIR/local_sender_blacklist}\
{CONFDIR/local_sender_blacklist}\
{}}
拒否
メッセージ = 送信者の IP アドレス $sender_host_address はローカルでブラックリストに登録されています。これが間違っていると思われる場合は、postmaster に連絡してください
!acl = acl_local_deny_exceptions
ホスト = ${存在する場合{CONFDIR/local_host_blacklist}\
{CONFDIR/local_host_blacklist}\
{}}
受け入れる
ドメイン = +relay_to_domains
エンドパス
検証 = 受信者
受け入れる