- ベストアンサー
Sendmailで自社宛のみ受信の方法
自社ドメインaa.comだとします。Sendmailで 外部 → 内部 ---- ○ 外部 → 外部 ---- × を実現したいときdefファイルでドメインaa.com宛てのみ受信するように設定すると思いますが # [acceptaddr]の ・ACCEPT_ADDRS=aa.com と # [smtpcheck] の ・LOCAL_HOST_DOMAIN=aa.com ・ALLOW_RECIPIENT_DOMAIN=aa.com ・ALLOW_RELAY_TO=aa.com これら4つの違いがわかりません。どなたか教えてください。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
>ACCEPT_ADDRSと >ALLOW_RECIPIENT_DOMAIN >ALLOW_RELAY_TO >の違いですが、 ACCEPT_ADDRSとALLOW_RECIPIENT_DOMAINは基本的に同じですが、 動作に大きな違いがあります。 CLIENT_XXX、ALLOW_XXX はsmtp_check機能です。 sendmailサーバへのSMTP接続時にチェックできる機能です。 つまり、ACCEPT_ADDRS以前に、ALLOW_RECIPIENT_DOMAINでSMTP接続を拒否できます。 SMTP の処理の時点で行われるため、接続が拒否された場合はメールを送っ てこようとした MTA 側でエラー処理(エラーメールの返送など)が行われます。 したがって、この設定を埋め込んだsendmail からエラーメールが発信され ることはしません。 SMTP接続前に拒否できるので、.forwardやaliasの解釈をする事もありません。 つまり、sendmailにとって拒否するときの負荷が軽いというわけです。 中継チェックには利用しましょう。 ALLOW_RELAY_TOは使った事ないですが、 この宛て先のメールは、発信者アドレスに関わらずすべて許可される、 という事なので、普通はこんな設定は必要ないと思います。
その他の回答 (5)
- xjd
- ベストアンサー率63% (1021/1612)
sendmailの本でALLOW_RELAY_TOを調べてみたら ある特定の別組織のドメイン宛に送られるメールを、自サイトのメールサーバで 中継させる事ができます、とあります。 特定のドメイン宛のメール中継を許可したい場合に指定するようですね。 スプールサーバで使えそうです。
お礼
ありがとうございました。 非常にご丁寧に教えていただきありがとうございました。教えていただいた本の購入検討してみます。
- xjd
- ベストアンサー率63% (1021/1612)
>IPアドレスによる制限のほうが安全と考えていいのでしょうか?(正確に言うとIPアドレスの偽装できますが・・) IPアドレスの偽装に対しては無力です。Pop Before SMTP とかSASLなどの認証の機能をsendmailに 組み込む事になります。 >どちらの送信者アドレス?。送信者アドレスって複数あるんですか? という意味ではなくて、 内側(自社内)から飛んできたメールの送信者アドレスをチェックするか、 外部から飛んできたメールの送信者アドレスをチェックするか、と言う事です。 CLIENT_HOST_IPADDR で自社と外部を分ける。 内側から外部へのメールは、誰に送信してもいいけど、送信者のアドレスは自社のアドレスを使いなさい。 外側から内部へのメールは、誰から来てもいいけど、自社ドメイン宛のメールだけ受け取りなさい。 ただし、外部の迷惑な人から来るメールはその送信者アドレスをSPAM_XXXなどで指定して、 拒否します。 それ以外(外側から、他のドメインへの中継)はすべて拒否しなさい。 が、第三者中継拒否の基本です。 図で説明できたら、分かりやすいんですけどね。 >CLIENT_HOST_DOMAINで許可して、 CLIENT_HOST_DOMAINはあまり使った事がありません。 DNSで解決させる時間(コスト)が無駄な気がして。 (補足) 先週、ソフトバンクから「sendmailセキュリティ」という本が出ました。 半分ほど読みましたが、なかなかお勧めです。
お礼
ありがとうございます。やっとわかってきました。後もう一歩です!。 http://www.edu.meisei-u.ac.jp/~zura/cf/cf.html#accept から抜粋すると >内側から外部へのメールは、誰に送信してもいいけど、送信者のアドレスは自社のアドレスを使いなさい。 の条件は CLIENT_HOST_IPADDR = 自社IPアドレス <説明> LOCAL_HOST_IPADDR に同じく IP アドレス(の全部ないしは一部)で中継を許可する設定だが、 MAIL FROM: に CLIENT_FROM_DOMAIN で指定されたドメイン名を用いた場合にのみ許可される。 つまり、CLIENT_HOST_IPADDR が接続元で、なおかつ MAIL FROM: に入力されたアドレスのドメイン名が CLIENT_FROM_DOMAIN で指定されているドメイン名であれば、中継が許可される。 >外側から内部へのメールは、誰から来てもいいけど、自社ドメイン宛のメールだけ受け取りなさい。 の条件は ACCEPT_ADDRS = 自社ドメイン <説明> OFFICIAL_NAME、MY_ALIAS など以外で、受け取りたいドメイン名を列挙する (ただし ACCEPT_OFFICIAL=no の設定の場合は、OFFICIAL_NAME 宛てメールは受け取らない)。 $m という sendmail.cf のマクロは、MY_DOMAIN で定義される。自ドメイン名宛ての電子メールを受け取れなければならない SMTP サーバは、 ACCEPT_ADDRS に必ず $m もしくは自ドメイン名を記述する必要がある。 仮想 Web サーバなどをサービスしている場合は、仮想 Web サーバの Webmaster 宛て電子メールを受け取るときに必要になる場合もあるだろう。 (ALLOW_RELAY_FROM=>これは危なくてつかえないことがわかりました。) あと引っかかるのが ACCEPT_ADDRSと ALLOW_RECIPIENT_DOMAIN ALLOW_RELAY_TO の違いですが、自社ドメインだけ受け取る設定ならどれで設定しても同じ結果になりますよね?
- xjd
- ベストアンサー率63% (1021/1612)
>CLIENT_FROM_DOMAINは >メールのFromアドレスのドメインをチェックするのでしょうか?それだと、簡単に書き換えられますよね? あなたが参考にしているURLに書かれているとおりです。 書き換えたら、接続拒否されます。 ##CLIENT_FROM_DOMAIN=/etc/sendmail.clientfrom 発信者アドレスとして許可するドメ ##CLIENT_FROM_DOMAIN=kyoto-u.ac.jp インを指定する >メールのFromアドレスのドメインをチェックは >ALLOW_RELAY_FROM >だと思うのですがどうでしょうか? どうでしょうか、と言われましても、 どちらの送信者アドレスをチェックするかはあなたが決定する事です。 そちらのメールサーバのポリシーにしたがって決めて下さい。
お礼
何度もすみません。やっぱりよくわからないです。 >どちらの送信者アドレスをチェックするかはあなたが決定する事です。 どちらの送信者アドレス?。送信者アドレスって複数あるんですか?例のサイトには下記のように説明されていますが、 ##ALLOW_RELAY_FROM=kyoto-u.ac.jp 中継を許可するメールのFromドメインを限定するリストを指定する。 ##CLIENT_FROM_DOMAIN=kyoto-u.ac.jp 発信者アドレスとして許可するドメインを指定する 私には同じ意味としかとらえられないのです。何が違うのでしょうか? 勉強不足のため、何度もお聞きしてすみません。
補足
お礼を書いた後にわかりました。ちゃんと読んでなくてすみませんでした。 CLIENT_HOST_DOMAINで許可して、これに書かれていないものを許可したいときにALLOW_RELAY_FROMを使うんですね。 ただ、CLIENT_HOST_DOMAIN=自社ドメイン を記入すると、送信元アドレスを偽装して外部から送られると、リレー処理してしまうんですよね。ということは、IPアドレスによる制限のほうが安全と考えていいのでしょうか?(正確に言うとIPアドレスの偽装できますが・・)
- xjd
- ベストアンサー率63% (1021/1612)
昔sendmail8.9系の時はWIDE-CFで設定していましたが、第三者中継の設定は 以下のようにしていました。 ●LOCAL_HOST_IPADDR=127.0.0.1 自分自身(メールサーバ)からの送信は無条件に許可する。 ●CLIENT_HOST_IPADDR=自社のネットワークアドレス 自社内のネットワークアドレスを指定する。 CLIENT_HOST_IPADDR以外からのsmtp接続は外部からの接続となる。 ●CLIENT_FROM_DOMAIN=自社のメールドメイン名 CLIENT_HOST_IPADDRからのsmtp接続(社内からの送信接続)に対して、 メール送信者のドメイン名を限定できる。 つまり、社内のメールクライアントで、変な送信者ドメインを設定 していたら、拒否できる。 CLIENT_HOSTにマッチしなかったネットワークからの接続(外部からの接続) に対して、以下のALLOW_XXXでのチェックが有効になります。 ●ALLOW_RECIPIENT_DOMAIN=自社のメールドメイン名 外部から受け取れるのは、宛て先が自社ドメイン名のみに限定する。 ACCEPT_ADDRSとよく似ていますが、ALLOW_RECIPIENT_DOMAINに他社の ドメイン名を指定したら、その、他社ドメイン宛のメールを中継できる、 という事です。普通はそんな事しませんね。 >クライアントの送信元IPアドレスを逆引き(DNS)して判断するのでしょうか? sendmailはDNSの正引き・逆引きの設定が必要です。
お礼
ありがとうございます。 CLIENT_FROM_DOMAINは メールのFromアドレスのドメインをチェックするのでしょうか?それだと、簡単に書き換えられますよね? メールのFromアドレスのドメインをチェックは ALLOW_RELAY_FROM だと思うのですがどうでしょうか? 下記を参考にしました。 http://www.nspl.co.jp/Solaris/Mail/cf37.html
- xjd
- ベストアンサー率63% (1021/1612)
●ACCEPT_ADDRS ACCEPT_ADDRSはOFFICIAL_NAME や MY_ALIAS に記述されている名前以外宛の メールも受け取りたい場合に、その受け取るべきアドレスを指定します。 これより以下は第三者中継拒否の設定です。 ●LOCAL_HOST_DOMAIN・LOCAL_HOST_IPADDR 無条件で中継を許可するホストを指定します。 受信メールの送信元ホストが組織外か組織内かの判定するために指定します。 LOCAL_XXX にマッチしなかった(組織外)からのメールに対して、 ALLOW_XXXの設定が有効になります。 ●ALLOW_RECIPIENT_DOMAIN 当該ホストが受理する宛先ドメインの指定です。 ●ALLOW_RELAY_TO 中継を許可するエンベロープ受信者アドレスです。 (使った事ないですが。)
お礼
早速のご回答ありがとうございます。 ●LOCAL_HOST_DOMAIN・LOCAL_HOST_IPADDR は絶対自社アドレス限定にしないとだめですね。 ちなみにLOCAL_HOST_DOMAINで指定した場合、クライアントの送信元IPアドレスを逆引き(DNS)して判断するのでしょうか? あと ACCEPT_ADDRS と ALLOW_RECIPIENT_DOMAIN はあて先かXXXXのものなら受けますよ!っていう意味ですよね。まったく同じ意味だと思うのですがどうでしょう?
お礼
>ACCEPT_ADDRSと >ALLOW_RECIPIENT_DOMAIN の違いはよくわかりました。ありがとうございます。 でも以下の部分がちょっとひっかかります。 >ALLOW_RELAY_TOは使った事ないですが、 >この宛て先のメールは、発信者アドレスに関わらず>すべて許可される、 >という事なので つまり、これにALLOW_RELAY_TO=自社ドメインと設定することは、 ACCEPT_ADDRS=自社ドメイン や ALLOW_RECIPIENT_DOMAIN=自社ドメイン と同じ要件を満たせるのでは?