« 昨日も水換え | トップページ | 3色ドラゴン発見 »

2006.09.12

eximでsubmissionポートの設定をしてみるの記

最近・・・という程最近でもないですが(^^;プロバイダで迷惑メール対策として、OP25B(Outbound Port 25 Blocking)される場合が増えている。
自宅とか固定的な場所で使うなら接続プロバイダーのSMTPサーバを設定して使えばいいんだけど、外に出て使うとか、ノートとかで複数の場所で使う場合、使う場所によってネットワークが変わるからサーバ設定も変えなきゃいけないとか面倒な事になる。

まぁ、どこかの契約プロバイダでサブミッションポートに対応してる所があれば、そこを指定しておけばいいんだけど、会社で使う時に社内宛メールを一旦プロバイダに送って返送されてくるのを待つというのもアレなので、会社のサーバでもサブミッションポートの設定をしてみた。


追記: exim4でのクライアント側の設定をこちらに書いてみました。 exim3のクライアント側設定は、このページの下の方↓。

モノはexim3系
Debianでhamm→slink→potato→woody→sargeと出世(^^;してきたサーバで(ハードは何度か変わりましたが)、設定を大幅に変えるのも面倒臭いから、sargeでもexim 3系使ってたりします(^^;

で、やる事としては
・CRAM-MD5で認証できるようにする
・通常の25/TCPだけでなくサブミッションの587/TCPでも受け取れるようにする
という2つの設定が必要。

まず認証の方だけど、eximconfigとかで作った設定ファイルだと、plainとかloginの場合の例はコメントとして入ってるけど、CRAM-MD5の場合が無い。
添付のドキュメント見ると

fixed_cram:
driver = cram_md5
public_name = CRAM-MD5
server_secret = ${if eq{$1}{ph10}{secret}fail}
server_set_id = $1

という感じで、ユーザ名、パスワードが1組固定の場合しか無い。
なので、ちょびっと弄ってユーザ名/パスワードの組をファイルで持って、それをlookupするようにしてみた。
こんな感じ

cram_md5:
driver = cram_md5
public_name = CRAM-MD5
server_secret = "${lookup{$1}lsearch{/etc/exim/passwd}{$value}fail}"
server_set_id = $1

/etc/exim/passwdというファイルに
user1:hogepass
user2:hagepass
 :
という感じで複数ユーザ分を書いておけば探してくれるという仕様
ちなみに、MD5を取るためには生パスワードが必要なので、ここに書くパスワードは生パスワードです。
キモチ悪いけど仕方ない(^^;
ちなみに、オーナーはroot.mailとしてパーミッションは640あたりで。

# exim -bP authenticator_list

と実行してみて

cram_md5

と出てくれば、この辺の設定は良さそうな予感。

後は、最初の方のMAIN CONFIGURATION SETTINGSのどこか(host_accept_relayとかの近所がわかりやすいカモ)に

host_auth_accept_relay = *

というのを入れておけば、認証されたユーザならリレーOKという設定になる。

とりあえずは25/TCPに向けてCRAM-MD5で認証できるかどうかをテストしてみる。
(もちろん、社外とかのOP25Bされているネットからは不可)
で、問題無ければ認証系はOKという事で。

次にサブミッションポートの587/TCPで受け取る設定だけど、eximをデーモンで動かす場合、ポートの指定は一つしかできない。
それにプロバイダならまだしも、ウチのような零細企業(^^;でパフォーマンスが問題になるほどサブミッションポートでメール送信を受け取る事はないから、サブミッションポートの方はinetdで待ち受ける形にしてみた。

sargeに上げた時に/etc/servicesをお任せで更新していればサブミッションポートも追加されてるけど、ウチの場合servicesに登録してるのがいくつかあったから、woodyかもっと古いままでサブミッションポートが登録されていない。
んで、/etc/services.dpkg-distから

submission 587/tcp # Submission [RFC2476]
submission 587/udp

という行を/etc/servicesにコピペ
あとは/etc/inetd.confに

submission stream tcp nowait mail /usr/sbin/exim exim -bs

を足して killall -HUP inetd で587/TCPでも受け取れるように。

って実はこれだと不完全なんですよねぇ
と言うのも、本来であれば、サブミッションポートは認証ユーザだけが使えるようにすべきなんだけど、こうやってしまうと587/TCPと25/TCPは全く同じ動作になるから、このサーバ宛のメールは587/TCPでも非認証ユーザから受け取ってしまう。
完全にするなら、587/TCP用のexim.confを作って、そっちでは全くメールは受け取らずに、認証ユーザのリレーだけをするようにすべきなんだろうけど、まぁ、面倒だから(^^;これでもいいかな?みたいな。
そのうち、こういう甘い設定(^^;のサブミッションポートめがけて587/TCPにspam送ってくるようになったら考えよう。

# っていいのか?
## まぁ、25/TCPなら受け取るメールを受け取ってしまうだけで、非認証ユーザのリレーをする訳じゃないし、既に25/TCPにはイヤという程spamが来てるし(^^;

ちなみに、これはeximが認証サーバ側の場合の設定で、クライアントとして、OP25Bされた動的IPアドレスの所に立てたサーバからsmarthost設定でこのサーバを使う場合(要するにCRAM-MD5のクライアントとして使う場合)は、通常のsmarthost設定をした後で、TRANSPORTS CONFIGURATIONの部分にある

remote_smtp:
driver = smtp

というのに2行加えて

remote_smtp:
driver = smtp
port = 587
authenticate_hosts = dokkano.submission.server.example.com

みたいにして、最後のAUTHENTICATION CONFIGURATIONに

cram_md5:
driver = cram_md5
public_name = CRAM-MD5
client_name = username
client_secret = password

を加える。
ちなみに、potatoの頃のexim.confだと、最後にAUTHENTICATION CONFIGURATIONが無くて、最後がREWRITE CONFIGURATIONになってるから、その場合はこのcram_md5:の前に一行

end

というのを足してREWRITE CONFIGURATIONを終わらせておく必要がある。

|

« 昨日も水換え | トップページ | 3色ドラゴン発見 »

パソコン・インターネット」カテゴリの記事

コメント

サーバ管理お疲れ様ですー。

うちの会社の回線を借りてるプロバイダが唐突にポートを587に変えてくれて、おまけに連絡してくれなくて大騒ぎになりましたよー(笑)。
何か大アタックだったらしく、ホスティングの人も泣いていて、まさに大騒ぎ。
人口が多い割にはイマイチなネット環境だなあといつも思うのです。
光の障害も多いので完全移行もできないし。
都心部以外の地域の方が絶対安定してるよなあ、といつも思うのです。

投稿: たえ | 2006.09.20 10:15

>たえさん
光系(謎)は地域によっては意外と(?)遅いとかいう事あるみたいですね。
「これならADSLの方が速かった」という話も結構聞きます(^^;
まぁ、最近一斉に光に移る人が増えて、設備が追い付かないんでしょうがねぇ

ウチの会社はBフレッツですが、中心部から外れた収容局だしBフレッツベーシックなので、あまり加入者もいないらしく快適です(^^;

投稿: <セルダン> | 2006.09.20 19:28

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/4003/11868351

この記事へのトラックバック一覧です: eximでsubmissionポートの設定をしてみるの記:

« 昨日も水換え | トップページ | 3色ドラゴン発見 »