Just another IT site ※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。At Your Own Risk!! TURN BACK WHILE YOU CAN
PR

sendmailのcheck_rcptでメールのrelayが拒否される時の確認

※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。スクリプトはAI生成のものも多いのでコピー&ペーストの際は文字コードに注意ください!

メール送信時にrelay先のメールサーバ上で以下のようなログが記録されて、メール送信ができない場合、

・・・ruleset=check_rcpt, arg1=<xxxx@xx.co.jp>,relay=XXXXXX[XXX.XXX.XXX.XXX], reject=550.5.7.1 <XXXX@aa.co.jp>…Relaying denied

check_rcptが参照している

/etc/mail/access

で許可リストに入っているかを確認

XXX.XXX.XXX(ネットワーク表記)  RELAY
XXX.XXX.XXX.XXX(IPアドレス表記) RELAY

accessファイル編集後はaccess.dbの再作成が必要

【AIによる回答】

Sendmailにおいて、ruleset=check_rcptaccess.db(通常は/etc/mail/accessから生成)は、主に不正リレーの防止(アンチリレー)やスパム対策のために組み合わせて使用されます。
1. check_rcpt ルールセットの役割
check_rcptは、SMTPセッション中にクライアントが RCPT TO: コマンド(受信者の指定)を送った際に呼び出されるルールセットです。
  • 主な目的: 未認証の第三者によるメール転送(オープンリレー)を防ぐこと。
  • 動作タイミング: 受信者のアドレスを受け取った直後に実行されるため、不要なメールをデータ本体を受け取る前に拒否でき、サーバー資源の節約になります。
2. access.db との連携
access.dbは、ホスト、IPアドレス、またはメールアドレスに対するポリシーを定義するデータベースで、check_rcpt内で参照されます。
3. 設定例(/etc/mail/access
/etc/mail/accessファイルにルールを記述し、makemapコマンドでaccess.dbに変換して使用します。記述例については 名古屋大学 を参照してください。
Sendmailの/etc/mail/accessファイルを編集した後は、Sendmailが直接読み込めるデータベース形式(.db)に変換するためにmakemapコマンドを実行する必要があります。 
以下に、設定の反映手順をまとめます。
1. makemap コマンドの実行
以下のコマンドをルート権限(root)で実行し、テキスト形式のaccessファイルをaccess.dbにコンパイルします。
bash
# makemap hash /etc/mail/access < /etc/mail/access
※注:多くの場合、出力先は/etc/mail/access.dbですが、環境によっては/etc/mail/accessのままで機能する場合があります(.dbが自動付与される)。上記コマンドは、より一般的な、標準入力(<)を使ってファイルを指定する方法です。 
2. Sendmailの再起動(必要に応じて) 
makemapを実行すれば即座に内容は反映されることが多いですが、念のためSendmailプロセスをリロードまたは再起動して、設定を確実に適用します。 
bash
# service sendmail restart
# /etc/init.d/sendmail restart  # 上記が使えない場合
よくあるaccessファイルの設定例
vi /etc/mail/access で編集します。 
  • 特定のIPからのメール中継(リレー)を許可
    Connect:192.168.1.0/24 RELAY
  • 特定のドメインからのメールを拒否
    spammer.com REJECT
  • 特定の宛先アドレス(To:)へのメールを許可
    To:info@example.com RELAY
     
設定の確認方法
生成された/etc/mail/access.dbの内容はバイナリ形式ですが、stringsコマンドで確認できます。 
bash
# strings /etc/mail/access.db
注意点
  • /etc/mail/sendmail.mcで FEATURE(access_db’)dnl` が有効になっている必要があります。
  • ファイル編集・makemapの実行は必ずルート権限で行ってください。 
別の方法:make
/etc/mailディレクトリに移動して make コマンドを実行することでも、access.dbを含む関連データベースファイルをまとめて再生成できます。 
bash
# cd /etc/mail
# make
タイトルとURLをコピーしました