メール送信時に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_rcptとaccess.db(通常は/etc/mail/accessから生成)は、主に不正リレーの防止(アンチリレー)やスパム対策のために組み合わせて使用されます。1.check_rcptルールセットの役割check_rcptは、SMTPセッション中にクライアントがRCPT TO:コマンド(受信者の指定)を送った際に呼び出されるルールセットです。
- 主な目的: 未認証の第三者によるメール転送(オープンリレー)を防ぐこと。
- 動作タイミング: 受信者のアドレスを受け取った直後に実行されるため、不要なメールをデータ本体を受け取る前に拒否でき、サーバー資源の節約になります。
2.access.dbとの連携access.dbは、ホスト、IPアドレス、またはメールアドレスに対するポリシーを定義するデータベースで、check_rcpt内で参照されます。3. 設定例(/etc/mail/access)
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
