« Win2000 でも cygwin ssh のログ監視してIPアドレス指定ブロック | メイン | てすと »

2005年12月20日

セカンダリメールサーバを cygwin exim で [ カテゴリ : memo - 自宅サーバ設定(Linux、たまにWindows) ]

といいながら、プライマリが Vine の postfix である場合のメモ。

Vine 側は普通に動けばいい、、とみせかけて、謹製 /etc/postfix/main.cf の中で、

unknown_local_recipient_reject_code = 450

になってるのは、550 にすること。

これは、セカンダリがうけつけた「存在しないユーザ宛メール」に対して、「一時的エラー」として返すのではなく「致命的エラー」として返すようにという設定。
一時的エラーとしてしまうと、セカンダリのほうで「あとでリトライしよー」ということになってしまい、結果セカンダリの一時フォルダに SPAM とかがチクセキしてしまうのでした。(気付くのに相当かかったよコレ)

うちで使ってるのは SMTP AUTH 対応化したヤツなので、過去の記事でも見てください。

で、Secondary のほうは cygwin の setup.exe で入れて、exim-config やると、
Windows サービスとして登録されるので、あとはサービス起動するようにすればいい。

んで /etc/exim.conf の設定のみメモ。

acl_check_rcpt で、プライマリに存在しないユーザー宛のメールをはじくため、

deny
domains = +relay_to_domains
message = unknown user
log_message = 3 unknown user in callout check
!verify = recipient/callout=20s,defer_ok,no_cache

とかいうのを

accept domains = +relay_to_domains
endpass
verify = recipient

の前に入れる。これは、配送先サーバに問い合わせして受取人チェックをするが、
問い合わせできない場合は受け容れる。そしてキャッシュをしない、というもの。
(postfix はこれに550 って返してくれないといけない)

あと、配送は begin routers の後にでも

sendback_to_primary:
driver = manualroute
transport = remote_smtp
domains = +relay_to_domains
route_list = "*domainame primary.servername byname"
host_find_failed = defer
no_more

とか。

で、当然 relay_to_domains とかはしっかり設定して、リレー禁止とかになるようにと。

終わってみれば簡単なんだけど、苦労した。

投稿者 JK : 2005年12月20日 09:03

トラックバック

このエントリーのトラックバックURL:
http://om.pizzica.to/mt-tb.cgi/45