2009年03月31日

postfix の relayhostの先をSMTP Authが必要なメールサーバにする(OP25B対策)

[ カテゴリ : memo - 自宅サーバ設定(Linux、たまにWindows) ]
[ カテゴリ : ★postfix ]

要するに LAN 内に postfix が動いてるサーバがあって、
たまに LAN外にメールしたいことがあって、
だけど、ISP は OP25B してるし、ISP の SMTPサーバは SMTP AUTH を要求する、
そんな状況の場合。


smtp.example.jp のポート587 番に
SMTP AUTH (user: accountname@dokka.domain, pass: password_da)の
PLAIN(平文)で認証して、relay してもらう方法。


参考にしたサイト:
http://www.vividfire.net/knowledges/postfix/relayhost-smtpauth/


ハマったところ:
relayhost の [] をつけわすれてた。最初のファイル(smtprelaypass)と同じ文字列にしなければ。

postfix が 参照するファイル名は *.db なんだが、main.cfg には .db は書かない。
(hash って書いてあると、.db が自動的に追加される様子)

投稿者 JK : 10:19 | トラックバック

2006年12月11日

Vine4.0時代の SMTP AUTH と Submission port

[ カテゴリ : memo - 自宅サーバ設定(Linux、たまにWindows) ]
[ カテゴリ : ★postfix ]

Vine4.0 の postfix-2.2.10-0vl6 は -lsasl2 されているので、普通に(コンパイルとかしないで)SMTP認証の設定ができる。
うちは以前は sasl2 ではなく sasl だったので、設定はまるごと必要だが。

うちで入ってる関連rpm パッケージ
postfix-2.2.10-0vl6
cyrus-sasl-md5-2.1.18-0vl6
cyrus-sasl-plain-2.1.18-0vl6
cyrus-sasl-devel-2.1.18-0vl6
cyrus-sasl-2.1.18-0vl6

(devel は本件ではいらんはずだが)


で、SMTPユーザーの登録のしかた。例によってアカウントとしては存在しない smtpsender とかで登録してみる。
まぁ、LDAP がきっちり動けばソレ使いたいものなんだが。

# /usr/sbin/saslpasswd2 -c -u `/usr/sbin/postconf -h myhostname` smtpsender

とかやったら、/etc/sasldb2 が出来るので、postfix から読めるようにしてやる。

# chgrp postfix /etc/sasldb2
# chmod 640 /etc/sasldb2


あとは、自分は既にやってあるが、/etc/postfix/main.cf で

smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname

とかなんとかやってpostfix側で認証を利用するようにする。

認証通った場合にはok扱いする、ってのがあちこちに設定が必要で、うちでは smtpd_helo_restrictions,smtpd_recipient_restrictions,smtpd_sender_restrictions で permit_sasl_authenticated を追加しておいた。

★Submission port (587)
ついでに Submission port の設定もしておく。
いや、してあったんだけどんだが、バージョンアップした場合 /etc/postfix/master.cf.rpmsave とかなっ てしまってるので master.cf に再度定義する。

submission inet n - n - - smtpd
-o smtpd_sender_restrictions=permit_sasl_authenticated,reject

の2行追加。


★SMTP認証/Submission port の動作確認
$ telnet localhost 25

とかやって、繋がったら
EHLO localhost(改行)
とかやると応答がくる。その中で
>250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5
みたいな応答があればよし。
どんな応答がこようが
QUIT(改行)
すれば接続は終わる。

Submission port を生かす場合は、telnet 587 でもやってみる。
ためしに localhost からやると MAIL FROM: と RCPT TO: 入れるだけで Sender Address が駄目だと言われる。
port 25 は localhost からは受け付けるわけだが、Submission port は SMTP AUTH 通らないと駄目(ってそうなるように master.cf に書いたわけだが)

そいつを利用して localhost の Wanderlust から 587番経由でメールを送ってテストしてみた。
パスワード間違ってみたりもして、適切な動作が確認できましたとさ。

投稿者 JK : 11:40 | トラックバック

2006年02月07日

postfix で queue に溜まりっぱなしのメールを調べたり消したり

[ カテゴリ : memo - 自宅サーバ設定(Linux、たまにWindows) ]
[ カテゴリ : ★postfix ]

まぁ、明らかに存在しないアドレスへの再送信試行がやたらログに残っちゃってるときとかに。

# postqueue -p
で、ID のリストを見る。
9DE9182F10 とかいう ID はここでわかる。
(ログなり spool のファイルなり漁ってもわかるけど)

# postqueue -f
で、全部の溜まってるメールの再配送を試みる。

もう、配送しなくていいやってメールは

# postsuper -d 9DE9182F10

とかやって消す。

以上。

投稿者 JK : 17:49 | トラックバック

2006年02月01日

postfix で virtual domain

[ カテゴリ : memo - 自宅サーバ設定(Linux、たまにWindows) ]
[ カテゴリ : ★postfix ]

main.cf (Vine なら /etc/postfix/main.cf) で

virtual_alias_domains = om.pizzica.to
virtual_alias_maps = hash:/etc/postfix/virtual

とか書いて、 /etc/postfix/virtual で

address@virtualdomain address@realdomain

みたいなのをずらずら書けばいい。

virtual_alias_domains に書いたドメインは、mydestination に書かなくても平気。
簡単だった。

投稿者 JK : 10:20 | トラックバック

2005年02月09日

Vine3.1 + postfix で SMTP AUTHする。

[ カテゴリ : memo - 自宅サーバ設定(Linux、たまにWindows) ]
[ カテゴリ : ★postfix ]

#Vine 4.0 ならもっと簡単
# 詳しくは http://om.pizzica.to/archives/2006/12/vine40_smtp_aut.html

やるからには CRAM-MD5 だろ。
というか、 spec ファイルとか見てると、cyrus-sasl を使って対応バイナリを配布してそうな雰囲気だが、実際は rpm は cyrus-sasl を要求するのに ldd /usr/sbin/postfix すると sasl の libなんざしったこっちゃーない状態。どうなのそれ?


目次:
1:cyrus-sasl 関連のは rpm で入れる
2:postfix は SRPMS から作り直す
3:/usr/lib/sasl/smtpd.conf を手作業で作る
4:saslpasswd -c -u hostname username でパス設定
5:/etc/postfix/main.cf をあれこれ設定

1:cyrus-sasl 関連のは rpm で入れる
# apt-get install cyrus-sasl cyrus-sasl-plain cyrus-sasl-devel cyrus-sasl-md5

devel は運用じゃなくて、postfix の再構築で必要なんじゃないだろうか。よくわからんが。

2: SRPM から作り直した postfix を入れる
2-1: postfix が入っているならもちろん消す。
# apt-get remove postfix

2-2: SRPM を持ってくる。
$ wget ftp://www.ring.gr.jp/pub/linux/Vine/Vine-3.1/SRPMS/SRPMS/postfix-2.0.20-0vl5.src.rpm
とか、そのへんで適当にどうぞ。

2-3: SRPM を展開する
$ rpm -i postfix-2.0.20-0vl5.src.rpm
これやると、~/rpm/SPECS とか ~/rpm/SOURCES とかにいろいろ出てくる。

2-4: ~/rpm/SPECS/postfix.spec を直す
とりあえず、Release の行は
Release: 0vm5
とか、0vl5 より後っぽいバージョン番号にする。

あと、%build の後にある make makefiles のあたりをいかのような具合に。



make makefiles \
CCARGS="-DMAX_DYNAMIC_MAPS \
-DHAS_LDAP \
-DUSE_SASL_AUTH -I/usr/include \
-DHAS_PCRE -I/usr/include/pcre \
-DHAS_MYSQL -I/usr/include/mysql \
-DHAS_PGSQL -I/usr/include/pgsql" \
AUXLIBS="-L/usr/lib -lsasl"


-DUSE_SASL_AUTH の行を追加してんのと、sasl の LIB 読みにいくようにするのと。

2-5: build に必要な devel rpm を入れる
# apt-get install openldap-devel pcre-devel MySQL-devel postgresql-devel pam-devel db4-devel gdbm-devel

なにが必要なのかわからない人は 2-6 やってみて怒られたら入れるくらいでいいよ、うん。
俺は spec 見て適当に入れたので、入れすぎてるかも(爆)
でも人によっては gcc が入ってなかったりするわけだろうしなー・・・

2-6: rpm rebuild
$ rpm -bb ~/rpm/SPECS/postfix.spec
これで RPM が出来上がるんだから、楽なもんだ。
できあがり場所は ~/rpm/RPMS/i386 とかその辺のはず。
mysql だ ldap だ出来てくるけど、とりあえず、
postfix-2.0.20-0vm5.i386.rpm
みたいのだけで大丈夫。
0vm5 ってのは2-4 で決めた Release 番号になる。

なんだから、openldap-devel だの postgresql-devel だのを入れずに、必要最小限の rpm だけ build という手もありそうなもんだが、面倒なので(devel 入れまくるほうが楽なので)パス。

2-7: rpm install
# rpm -Uvh postfix-2.0.20-0vm5.i386.rpm
とか、そんな具合。当たり前だろ!とか思うかね?
でも、Release 番号でヘンなのを入れると、ここではじかれるんだよねー。
0vl5 -> 0vm5 みたいにやってれば大丈夫なはずだが、最悪 --force でもなんでもどうぞ。

3:/usr/lib/sasl/smtpd.conf を手作業で作る
中味はたった1行
pwcheck_method:sasldb
だけ。以上。

4:saslpasswd -c -u hostname username でパス設定

重要:初めての saslpasswd のときは失敗するようなので、2回やってみる。

SMTP AUTH のユーザー名は実際の account がある必要はないので、適当に smtpsender とかいうアカウントをでっちあげてしまうのがいいと思う。

# /usr/sbin/saslpasswd -c -u `/usr/sbin/postconf -h myhostname` smtpsender

ここで、 `` の中は、postfix の main.cf で定められた myhostname をつれてくる呪文なので、そのままでよい。ちなみに、-c が新規ユーザーを追加する create の c で、ユーザーを削除したい場合は、-d になる。

これをやると /etc/sasldb というファイルが出来るので、そいつを postfix で読めるようにする
# chgrp postfix /etc/sasldb
# chmod 640 /etc/sasldb

ちゃんと登録できているかどうかは
# sasldblistusers
である程度解る。

5:/etc/postfix/main.cf をあれこれ設定
最低限、下記2行はいるだろ。
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname

で、あとは、認証通ったらなんの制限を緩和してやりたいかにより設定する。うちでは3項目。
smtpd_helo_restrictions, smtpd_recipient_restrictions, smtpd_sender_restrictions で permit_sasl_authenticated というのを入れある。

こうすると、認証通ってれば
「HELO がおかしかろうがok」
「宛先が誰でどこに relay しようがok」
「sender が誰名義であろうが ok 」という設定にそれぞれなる(はずだ)。
(smtpd_client_restrictions も設定したほうがいいんだろうか。)

main.cf 書き換えたら
# /sbin/service postfix restart
とかして postfix の再起動を忘れないように。


postfix は本当に AUTH CRAM-MD5 とかに対応したかを一応確認する。 これは、つないでみて EHLO の応答を見ればよい。

$ telnet localhost 25

とかやって、繋がったら
EHLO localhost(改行)
とかやると応答がくる。その中で
>250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5
みたいな応答があればよし。
どんな応答がこようが
QUIT(改行)
すれば接続は終わる。

投稿者 JK : 00:13