- PR -

セカンダリMTAとしての sendmail と不正中継

1
投稿者投稿内容
syscat
会議室デビュー日: 2003/06/05
投稿数: 8
投稿日時: 2004-10-16 12:29

はじめまして。

セカンダリメールサーバに sendmail-8.9.3p2 を使っています。
ここでは仮にセカンダリを受け持っているドメインを「mydomain.com」とします。
sendmailが動いているホストは「myhost.mydomain.com」です。

今回不正中継ブラックリストであるORDBに登録されてしまい、調べたところ、

 "someone@otherdomain.com"@mydomain.com

という形式のエンベロープTOアドレスへのメールを、無制限に
中継してしまっていることに気付きました。

「mydomain.com」にあたるドメインは、CF-3.7Wpl2の定義ファイルで

ALLOW_RELAY_TO=/etc/sendmail.relay.to

と定義してから、/etc/sendmail.relay.to ファイルに

mydomain.com

と記述しています。
これは一般的なセカンダリMTAとしての書き方ですよね。

ソースルーティング形式のメールアドレス充てのメールを拒否するため、

ACCEPT_ADDRS='myhost.mydomain.com'
REJECT_SOURCE_ROUTE_RELAY=yes
REJECT_EXTERN_SRR=yes

をsendmail.defに記述していますが、やはり中継してしまいます。

ACCEPT_ADDRSを、

ACCEPT_ADDRS='mydomain.com'

に書き換えると、ソースルーティングチェックが利いて中継を拒否してくれますが、
これだとローカル配送してしまうため、セカンダリメールサーバとして機能しません。

sendmail-8.9.3を使っているサイトはまだまだ少なくないと思うのですが、
セカンダリメールサーバの不正中継対策はどうされているんでしょうか?

何でも結構ですので、アドバイス頂けるとありがたいです。
syscat
会議室デビュー日: 2003/06/05
投稿数: 8
投稿日時: 2004-10-16 12:33
すいません。CFの定義ファイルを載せ忘れました。

CF_TYPE=R8V8
OS_TYPE=bsd4.4
BITNET=auto
MY_DOMAIN=mydomain.com
MY_NAME=myhost
OFFICIAL_NAME=myhost.mydomain.com
MY_ALIAS='cache.mydomain.com news.mydomain.com'
ACCEPT_ADDRS='myhost.mydomain.com'
COPY_ERRORS_TO='postmaster'
MAIL_RELAY_RESTRICTION=yes
REJECT_SOURCE_ROUTE_RELAY=yes
REJECT_EXTERN_SRR=yes
LOCAL_HOST_IPADDR=/etc/sendmail.localip
ALLOW_RELAY_TO=/etc/sendmail.relay.to
LOCAL_HOST_DOMAIN='mydomain.com'
PRIVACY_FLAGS='goaway'
TRUSTED_USERS=majordom
DIRECT_DELIVER_DOMAINS=all
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2004-10-16 14:22
こんにちわ.
引用:

syscatさんの書き込み (2004-10-16 12:29) より:

「mydomain.com」にあたるドメインは、CF-3.7Wpl2の定義ファイルで

ALLOW_RELAY_TO=/etc/sendmail.relay.to

と定義してから、/etc/sendmail.relay.to ファイルに

mydomain.com

と記述しています。
これは一般的なセカンダリMTAとしての書き方ですよね。


引用:

ACCEPT_ADDRSを、

ACCEPT_ADDRS='mydomain.com'

に書き換えると、ソースルーティングチェックが利いて中継を拒否してくれますが、
これだとローカル配送してしまうため、セカンダリメールサーバとして機能しません。


一般的かどうか分かりませんが,
ACCEPT_ADDRS='mydomain.com'
として,
DEFAULT_RELAY=
で他に送ってやればよろしいのでは?

※また WIDE な CF 使っている方って多いのでしょうか?
※今後のためにも m4 な cf 使ったほうが良い気がします.
syscat
会議室デビュー日: 2003/06/05
投稿数: 8
投稿日時: 2004-10-16 15:00
返信ありがとうございます。

引用:

一般的かどうか分かりませんが,
ACCEPT_ADDRS='mydomain.com'
として,
DEFAULT_RELAY=
で他に送ってやればよろしいのでは?



早速試してみました。

ACCEPT_ADDRS='mydomain.com'
DEFAULT_RELAY='smtp:hub.mydomain.com'

をsendmail.defに追加してsendmail.cfを再生成。

そうすると、確かに "someone@otherdomain.com"@mydomain.com には
ソースルーティングエラーを返してくれるようになりました。

しかし、肝心の someone@mydomain.com あてのメールについては、
DEFAULT_RELAYの設定が効いていないのか、ローカル配送しようとして
User Unknownエラーになります。

DEFAULT_RELAYよりACCEPT_ADDRSの方が優先されているようです。
STATIC_ROUTE_FILE=を使って、mydomain.comに対して静的配送先設定を
書いてやっても、User Unknownは変わりませんでした。

kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2004-10-16 16:23
引用:

syscatさんの書き込み (2004-10-16 15:00) より:

引用:

一般的かどうか分かりませんが,
ACCEPT_ADDRS='mydomain.com'
として,
DEFAULT_RELAY=
で他に送ってやればよろしいのでは?



早速試してみました。

ACCEPT_ADDRS='mydomain.com'
DEFAULT_RELAY='smtp:hub.mydomain.com'

をsendmail.defに追加してsendmail.cfを再生成。

そうすると、確かに "someone@otherdomain.com"@mydomain.com には
ソースルーティングエラーを返してくれるようになりました。

しかし、肝心の someone@mydomain.com あてのメールについては、
DEFAULT_RELAYの設定が効いていないのか、ローカル配送しようとして
User Unknownエラーになります。


DIRECT_DELIVER_DOMAINS='mydomain.com'
SPOOL_HOST='hub.mydomain.com'
とやると如何でしょう?
syscat
会議室デビュー日: 2003/06/05
投稿数: 8
投稿日時: 2004-10-16 16:56
思った通りの動作になりました!
ありがとうございました。

しかし、よそのsendmail-8.9.3を使ったセカンダリメールサーバって、
ソースルーティング対策されてるんでしょうか?
Webで見かける構築記録を見ていると、ALLOW_RELAY_TO=に中継したい
ドメインを書くだけっていうのをよくみかけますので、ちょっと気になります。

ところで、複数ドメインのセカンダリを1台で受け持っている場合は
どう設定するんでしょうか。
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2004-10-16 18:15
引用:

syscatさんの書き込み (2004-10-16 16:56) より:

しかし、よそのsendmail-8.9.3を使ったセカンダリメールサーバって、
ソースルーティング対策されてるんでしょうか?
Webで見かける構築記録を見ていると、ALLOW_RELAY_TO=に中継したい
ドメインを書くだけっていうのをよくみかけますので、ちょっと気になります。


cf だと default で制限してたと思いますけど,
CF だと分かりませんね〜.
引用:

ところで、複数ドメインのセカンダリを1台で受け持っている場合は
どう設定するんでしょうか。


default relay や spool host は性質からいって複数指定できませんから,
MX 引かせるのかな?
それとも
STATIC_ROUTE_FILE='sendmail.route'
として,sendmail.route に
GW smtp:aaa.mydomain.com
DOM aaa.hub.mydomain.com
GW smtp:bbb.mydomain.com
DOM bbb.hub.mydomain.com
と書いてやればよろしいのではないかと.
※実際使ったこと無いので詳しくないです.

cf では access.db 読ませるのが常套じゃないですかね.
1

スキルアップ/キャリアアップ(JOB@IT)