Hatena::Groupfreebsd

FreeBSD 行き当たりばったり記

2009-07-12OCNで非固定IPの自宅サーバを運用する方法のまとめ

前回の内容を踏まえて 19:14

クライアントの設定まで含めてまとめてみました。

まず、man 5 postconf を error で検索してみましたが

良い結果がでず、次に envelope で検索したら以下がヒットしました。

recipient_canonical_classes (default: envelope_recipient, header_recipient)
       What addresses are subject to recipient_canonical_maps address mapping.
       By default, recipient_canonical_maps  address  mapping  is  applied  to
       envelope recipient addresses, and to header recipient addresses.

       Specify one or more of: envelope_recipient, header_recipient

       This feature is available in Postfix 2.2 and later

postfixの設定を最初に覚える時にunixユーザと自由な形式のアドレスを対応付けるために

aliases_mapsとcanonical_mapsを設定しましたが、当時はただおまじないの様に本を真似て

いるだけでした。実はaliasesは別名での受信メールを指定したユーザのmailboxへ配信する設定で

canonicalは送受信時の名前の書き変えの対応表な訳です。

で上記のrecipient_canonical_classesですが、送信先の書き換えの対象になるアドレスで

デフォルトでenvelope recipient,hedder recipientが指定されています。

要するにOCNのサーバから蹴られてしまう状況が発生している際にエラーメールをまたOCN宛に送信するのを

回避すればいいので、(recipient_)canonicalOCNのメールアドレスをローカルのものに書き換えてやれば良い訳です。

但し、送信するメールはenvelopeとheader共にOCNのアドレスにならないと蹴られてしまうので、

上記のrecipient_canonical_classesにて受信時のアドレスだけ変換すると言うことです。

以下整理した手順

  • main.cfに以下を記述する

sender_canonical_classes = envelope_sender
sender_canonical_maps = regexp:/usr/local/etc/postfix/sender_rx
recipient_canonical_maps = hash:/usr/local/etc/postfix/recipient
relayhost = [smtp.vchoney.ocn.ne.jp]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/usr/local/etc/postfix/isp_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = plain, login

  • isp_passwdファイルとsender_rxファイル(ファイル名はmain.cfに記述したものであれば自由)

isp_passwd
[smtp.vchoney.ocn.ne.jp]:587 プロバイダのID:パスワード

sender_rx
/^.*$/ プロバイダのID@honey.ocn.ne.jp

  • recipientに以下を記入

プロバイダのID@honey.ocn.ne.jp エラー受信ユーザのcanonical

  • 以下を実行

postmap hash:/usr/local/etc/postfix/recipient
postmap hash:/usr/local/etc/postfix/isp_passwd

  • MUAの設定で送信者アドレスをOCNのアドレスにして、別途Reply-to(メールソフトによっては別の名前で設定

 例えばMSのoutlookexpressなら返信用アドレスだか何だかそんなところ)を設定してあげる。

  • postfix start(別にクライアント設定の前でもいいけど)

もうこれで大丈夫(のハズ)

YukiYuki2013/02/13 18:26That's a clever answer to a trckiy question

jqwzzmreujqwzzmreu2013/02/17 00:56QOkJa7 <a href="http://iafnlaxaqiix.com/">iafnlaxaqiix</a>

2009-06-02mail送信でハマる

昨日の続きです 23:22

関西でYahoo!BBを利用していたときはOP25B対策は

以下の設定でプロバイダのMTAにrelayしてもらってました。

main.cf

relayhost = [ybbsmtp.mail.yahoo.co.jp]
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/usr/local/etc/postfix/isp_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = plain, login
sender_canonical_classes = envelope_sender
sender_canonical_maps = regexp:/usr/local/etc/postfix/sender_rx

isp_passwd

ybbsmtp.mail.yahoo.co.jp USER:PASSWORD

sender_rx

/^.*$/ USER@ybb.ne.jp

取り合えずググります。まずはOCNのアナウンスのページ

http://www.ocn.ne.jp/mail/info/op25b/

  • 独自で構築したメールサーバを使用したい場合は、OCNのメールサーバを経由させるか、固定IPアドレスを利用して送信してください。
  • ※独自運用サーバの設定方法および固定IPアドレスの設定方法については、OCNではサポートしておりません。

勝手にしろってことですな。

で、適当にググって以下の様にしたのが間違いの始まり

main.cf(まずはsenderの書き換え部分をコメントにして以下だけ変更)

relayhost = [smtp.vchoney.ocn.ne.jp]:587

isp_passwd(これが大間違いその一)

smtp.vchoney.ocn.ne.jp:587 USER:PASSWORD

で、

[root@nardis]/etc/postfix# postmap hash:/usr/local/etc/postfix/isp_passwd
[root@nardis]/etc/postfix# postfix reload
postfix/postfix-script: refreshing the Postfix mail system
[root@nardis]/etc/postfix# mail FREEMAIL@yahoo.co.jp
Subject:TestMail
this is test message
.

とやってみた。

Jun  1 20:41:44 nardis postfix/smtp[44554]: 547EE16AB44: to=<FREEMAIL@yahoo.co.jp>, 
relay=smtp.vchoney.ocn.ne.jp[122.28.17.36]:587, delay=0.18, delays=0.05/0.03/0.04/0.05, 
dsn=5.0.0, status=bounced (host smtp.vchoney.ocn.ne.jp[122.28.17.36] said: 
554 <FREEMAIL@yahoo.co.jp>: Recipient address rejected: Access denied (in reply to RCPT TO command))

おや?Recipient address rejectedなんだそれ?

ここでテスト用にKMailを使ってプロバイダの送信サーバからメールを出そうとしたのがダメ押し

なんだ?エラーのポップアップが出たぞSender address rejectedだって?

KMailはアカウント設定で送信サーバのFQDNID/Passは設定できるけど、

送信者アドレスは「個人情報」に登録したもので送信されています。結果サーバに蹴られている)

おお!なんか以前と同じでenvelope_senderを書き換えたらいけそうだぞ!

  • 地獄へ一直線

main.cf

sender_canonical_classes = envelope_sender
sender_canonical_maps = regexp:/usr/local/etc/postfix/sender_rx

sender_rx

/^.*$/ USER@honey.ocn.ne.jp

[root@nardis]/etc/postfix# mail FREEMAIL@yahoo.co.jp

・・以下略

[root@nardis]tail -f /var/log/maillog

・・・・・・・唯々ものすごい勢いでmaillogがスクロールして行きます。

またやってしまいました 23:22

Recipient address rejectedって言っているのにsender書き換えちゃった上に

mailコマンドはそのまま打つと「Reply-To:」を省略しちゃうもんだから、ひたすら

Return-Path: <USER@honey.ocn.ne.jp>めがけてエラーメールの連鎖が!!

[root@nardis]/etc/postfix# postfix stop
postfix/postfix-script: stopping the Postfix mail system
[root@nadis]/etc/postfix# rm /var/spool/postfix/active/2C78116AB5D

とにかく落ち着いて行きましょう。もいちど良く調べてみて・・・・・なんと

isp_passwdファイルの中身

[smtp.vchoney.ocn.ne.jp]:587 USER:PASSWORD

↑こんな風にmain.cf同様にカッコが必要だったのね。

[root@nardis]/etc/postfix# man 5 postconf
------------------------------------
smtp_sasl_password_maps (default: empty)
       Optional SMTP client lookup tables with one username:password entry per
       remote hostname or domain,  or  sender  address  when  sender-dependent
       authentication  is  enabled.   If  no username:password entry is found,
       then the Postfix SMTP client will not attempt to  authenticate  to  the
       remote host.

なんかカッコが無いとポート番号以下がusername:passwordの形式に合致しないのでそもそも認証される

挙動をとっていないようですね。(しかし、それをRecipient address rejectedっていわれても・・)

・・で、一旦senderのrewriteは切って再度送信。

Jun  1 22:32:05 nardis postfix/smtp[45724]: 1F2BB16AB42: to=<FREEMAIL@yahoo.co.jp>, 
relay=smtp.vchoney.ocn.ne.jp[122.28.17.36]:587, delay=0.57, delays=0.05/0.03/0.17/0.32, 
dsn=5.5.4, status=bounced (host smtp.vchoney.ocn.ne.jp[122.28.17.36] said: 555 5.5.4 
Unsupported option: AUTH=<> (in reply to RCPT TO command))

ちがうエラーが出てきました。Unsupported option: AUTH=<>

なんだこりゃ?ググります。

http://www.aconus.com/~oyaji/bbs/past/0011/B0007015.html

これですね。OCN特有の現象ですか。書いてある通りにpostfixを再コンパイルしてみます。

[root@nardis]/etc/postfix# cd /usr/ports/mail/postfix && make extract
[root@nardis]/mail/postfix# vi /var/tmp/usr/ports/mail/postfix/workpostfix-2.5.6/src/smtp/smtp_proto.c
/*    ---------------コメントにした
 #ifdef USE_SASL_AUTH
 	    if (var_smtp_sasl_enable
 		&& (session->features & SMTP_FEATURE_AUTH))
 		vstring_strcat(next_command, " AUTH=<>");
 #endif
 */    ---------------ここまで
[root@nardis]/mail/postfix# make && make deinstall && make install clean

さて、いよいよ送信できるか?

Jun  1 22:43:56 nardis postfix/smtp[52191]: 5F50F16AB61: to=<FREEMAIL@yahoo.co.jp>, 
relay=smtp.vchoney.ocn.ne.jp[122.28.17.36]:587, delay=0.62, delays=0.09/0.03/0.17/0.32, 
dsn=5.7.1, status=bounced (host smtp.vchoney.ocn.ne.jp[122.28.17.36] said: 554 5.7.1 <root@jitakuno.domain.jp>: 
Sender address rejected: Access denied (in reply to RCPT TO command))

またまたエラーが出ました。だけど出口が見えましたね。

今度こそsenderの書き換えで大丈夫のはずなので再挑戦。

Jun  1 22:45:22 nardis postfix/smtp[52243]: 4AD6F16AB60: to=<FREEMAIL@yahoo.co.jp>, 
relay=smtp.vchoney.ocn.ne.jp[122.28.17.36]:587, delay=0.59, delays=0.05/0.03/0.18/0.33, dsn=2.0.0, 
status=sent (250 2.0.0 Ok: queued as C9743120132)

一件落着

はーあああ疲れた!

--------------------------------------------------------------------------------------------------

(追記と訂正:エラーメールがenvelope sender宛に送信されて連鎖になるのは、Reply-toが無いからでは有りません。

 単純にenvelope senderに返信されているようです。ちなみにReturn-Pathも全然関係ありません。

 またOCNは正当な送信者かどうかをメッセージヘッダのFrom:も併せてチェックしているようです。

 mailコマンドが成功したのはFrom:を省略すると自動的にenvelope senderが挿入されるためのようです。

 今なんとかOCNのメールサーバを騙して使えるには使えていますが、頻繁に送信するなら何かスクリプトで

 /var/log/maillogのサイズを監視して異常が有ったら通知する仕組みが必要です。

 また時間に余裕のある時にpostfixのエラーメールの返信先を変えられないか調べてみようと思います。

LovieLovie2011/07/25 22:20I had no idea how to approach this before-now I'm lcoked and loaded.

jlfjmcpajlfjmcpa2011/07/26 02:20xUUyui <a href="http://hufyodjtavbc.com/">hufyodjtavbc</a>

twtxdtcnutwtxdtcnu2011/07/26 21:28ef0UM9 , [url=http://bbxfwxcirmjv.com/]bbxfwxcirmjv[/url], [link=http://jkqradeajrxl.com/]jkqradeajrxl[/link], http://gapzivpaoyjh.com/

jfrtwxhkcujfrtwxhkcu2011/07/27 22:311vAnlE <a href="http://fhlakimpghbp.com/">fhlakimpghbp</a>

vbnghpjdbcjvbnghpjdbcj2011/07/28 18:06JibG9o , [url=http://fgdtveiuepfk.com/]fgdtveiuepfk[/url], [link=http://fzxavvfaeics.com/]fzxavvfaeics[/link], http://jfjibyjntwzt.com/

HuwerthHuwerth2013/02/14 14:44This is a neat summary. Thanks for sahirng!