Postfix(8)
Postfixスレッド その7です。 ●リンク 本家 http://www.postfix.org/ Postfix のぺーじ (ドキュメントの日本語訳、MLなど) http://www.kobitosan.net/postfix/ 過去スレ、関連スレなどは>>2-4 あたり OP25B回避のためにPostfixでrelayhostをプロバイダー提供のSMTPサーバに設定しています。 うまく設定できているかいろいろテストしていたら 送信者に設定されたアドレスのドメイン名がDNSで引けない場合と 送信先に設定されたアドレスのドメイン名がDNSで引けない場合に プロバイダーのメールサーバーに接続を拒否されてエラーになる事がわかりました。 その場合プロバイダーのサーバーからのエラーメールはなく /var/log/maillogにはRecipient address rejected: Domain not foundやSender address rejectedが 残っているのですが、ログを確認しないと一見正常に送信出来たように見えてしまうので 転送時にエラーが出たらPostfixから送信者にエラーメールを返すように設定出来ないでしょうか? >>102 regexpしかやってなかったです。 Debianなので、postfix-pcreをインストール。 regexpのところをpcreにしたら引っかかるようになりました。 header_checksに追加したのはこれです。 /.*\x1B\x24\x42.*\x1B\x28\x42.*/ REJECT 今のところ、spamらしきのが数通かかってます。 正当なメールが引っかかるならそのときに考えます。 さんくす。 その後調べたところ、 strict_7bit_headersというオプションを発見。 そしてこんなFAQも。 ttp://www.postfix-jp.info/origdocs/kylesfaq.html#ubestr7 やるならこの方がいいのかも。 メールスプールにcyrus-imapdを使ってる場合、 strict_7bit_headers有効にしないと ときどきsubjectがXXXXXXになってびっくりする。 凄い初心者的な質問で申し訳ないのですが・・・ 複数Serverにそれぞれpostfixを導入し、syslogに動作ログを出力させています。 その際にsyslogの内容を確認すると、[ID ******* mail.info]という記載があるServerと 無いServerが存在します。 また同じようにJan 31 14:03:31 test postfix/qmgr[29573]: C0D6C364122: removedという キュー削除の記載もあるものとないものが・・・ これらは何かの設定によりsyslog出力されたりしなかったりするのでしょうか? >その際にsyslogの内容を確認すると、[ID ******* mail.info]という記載があるServerと あるのは Solaris、ないのはそれ以外。 >また同じようにJan 31 14:03:31 test postfix/qmgr[29573]: C0D6C364122: removedという あるのは最近の postfix、ないのはクソ古い postfix。 >>108 ありがとうございましたー! 参考にさせて頂きます! spam対策に受信時のSPFチェックを組み込んでみようかと思うのですが、 お薦めor主流の実装はどんなもんでしょう。 SPFって効くの? ライセンス契約云々で最初から考えてなかった。 うちはtarpittingとpostgreyが効いてる。遅延は今のところ問題なし。 不正なHELOを拒否しようかと思ったけど、大口顧客が引っかかったのであわてて警告ログにとどめた。 >>110 spamass-milterに全部お任せしちゃうのが一番楽 >>112 spamassって結局SAだからおせえだろ。 そんだけ余裕のあるメールサーバならいいだろうけども。 >>114 メールの流量、サーバの能力にもよるけど、100人規模ならXeon 2GHz、1GB くらいのちょっと昔のマシンでもspamass-milter -> spamd で無問題。 スコアが高いものはSMTP段階でconnection closeとかできる。 ついでにclamd-milter -> clamdでウイルススキャンをやっても無問題。 content_filter って複数回起動出来ないのか… ローカルの別portにプロセス立ててそこでやりとりすればいいのはわかるけどマンドクセ。 smtpd のみで起爆するのが問題なのはわかったけど他はどれが安全なんだろ。 smtp で起爆させたって事例みつからないし。 content_filter って複数回起動出来ないのか… ローカルの別portにプロセス立ててそこでやりとりすればいいのはわかるけどマンドクセ。 smtpd のみで起爆するのが問題なのはわかったけど他はどれが安全なんだろ。 smtp で起爆させたって事例みつからないし。 PGP暗号化されて無いメールが来たら受信拒否&公開鍵添付で「この鍵で暗号化し て送りなおしてね」って自動返信。 、、、ということがpostfixで可能ですか? >>119 それはMDAの仕事だからpostfixはあんまり関係ないんじゃない? 受信拒否というのが smtpd のレベルで蹴り飛ばすなら別だけど、 それを実装するのは結構大変そうだな あー言われてみればそうですね。procmailなりscmailで処理すべきですね。 アドヴァイスありがとうございます。 送信者偽装の spam に対してまで自動応答するのはやめてもらいたい じゃあSPFの厳密解釈+MXレコードの引けなかったドメインには4xxを返すってことで home_mailbox = Maildir/ に変更し、ホームディレクトリのもMaildirを作ったのに 受信メールが /var/mail/ユーザー名に保存されてしまいます 何が原因でしょうか? local_transport が local(8) ではなく、procmail とか maildrop とかに 変更されてるクソ linux ディストリがあるらしい。 その場合>>126 のような現象が起きる。 postconf -n を実行したところ mailbox_command = procmail -a "$EXTENSION" これが原因なんですかね ああ、local_transport じゃなくてそっちだったか。 それを消せばちゃんと maildir に配送されるはず。 確かDebianもデフォではprocmailを使うはず procmailはねえだろ。 って、近頃はマシなものになってるのかねえ。 数年前にソース読んだときにはガックリきて、即、使うのやめたが。 直接postfixの話ではないのですが、 postfixをrootでない一般ユーザーから再起動する方法はないでしょうか? /etc/ini.d/posfixにsetuidしても駄目でした。 一般ユーザーで動かしてるwebアプリの管理画面から再起動させたいのですが。 すんません、sudoでスクリプト限定して実行させることができました・・・ >>135 いや、まったくマシになっていない。例によって例のごとくのbad know-howの固まり。 >>136 それはやばすぎ…と思ったら、137でまともな方法を取ったのですな。 問題解決することができました ご協力ありがとうございました >>134 いや、そんなことはない。 だいぶ前のDebianでMaildirにしたくて わざわざprocmailで配信するようにした 記憶がある。恥ずかしい過去だ。 そんな私も、今ではdovecotのdeliverを 使ってsieveで振り分けできるようになり ました。 またまた教えてください orz Posrfixではないのですがつながりがありそうなので サーバー機はdebianを使っていましてsquirrelmailのメニューが日本語になりません ・dpkg-reconfigure localesでlocaleをja_JP-EUCに設定しています ・squirrelmail configureでdefault language:ja_JP default Charset:iso-2022-jpに設定しています ・squirrelmail-localesインストール済み debianだとsquirrelmail.poをコンパイルしなくても これでいけると聞いたのですがうまくいきません何が考えられますか? >>141 どうしてそれがPostfixに関係あると思える脳をしているんだか、お前の脳を 解剖して調べてみたい。 そのdebianマシンをケーブル引きちぎって窓から投げ捨てろ。それで万事解決。 postfix のドキュメントに、ズバリ 「postfix にサブミッションポートを開けるにはこうしろ」 「postfix で msa するにはこうしろ」 という説明を見つけられないんだけど、そういうもんですか? やり方自体はググればなんとなく分かるわけなんだけども 裏がとれないというかなんか根本的な知識がない可能性大という感じなので ズバッと教えろ、いや教えてくださいm(__)m master.cf にはじめっからコメントアウトされて入ってる内容じゃ不満ですか。 >>148 そうです不満に思ってしまったのです。不満というか不審というか。言ってよ!みたいな master の役目を考えれば自明だろ的なハナシなのかな。。 日本以外では OP25B はあんまりやってないから、 submission 用のポートを独立して開ける必要性ってのもあんまりなくて そういうドキュメントの需要も低いんじゃね? sasl まわりとか、TLS が必須/任意/なしとか、PbS ありなしとか、 認証まわりのポリシーはサイトによって大きく異なるから、 コレで決まり!という定番設定なんてものは存在しないというのもあるだろう。 所詮submissionは既存機能の組み合わせなので、 インターネットメールの仕組みを理解していれば設定できる。 逆に、理解できてないやつはメールサーバ触るな。 targreyを導入してみようと調整中です。 postgreyのdelayを幾つにしようか迷っています。 ググってみるとdelay=3600という方や、delay=1800って方もいらっしゃるようです。 今は3600にしていますが、このdelayを短くすると排除率が下がるのでしょうか? 排除率を高めるよりは、必要なメールを救いたいので、少し短くしようかと思うのですが、加減が分かりません。 ちなみにtarpit=125、retry-count=2で設定しています。 tarpit=125にしたのは、 http://d.hatena.ne.jp/stealthinu/20070703/p1 を参考にしました。 delayの数値について、色々なご意見をいただけたら幸いです。 スレ違いでしたら、ご容赦を。 >>152 一般のMTAがどれくらいの再送間隔なのかっていう話は理解できるか? >>153 ありがとうございます。 そこを失念していました。 RFC2821に30分以上間隔を置くことってありました。 http://www.puni.net/ ~mimori/rfc/rfc2821b.txt それでは1800未満には意味がなさそうですね。 目安にします。 ありがとうございました。 >>154 それが意外に30分以内に再送するやつも多いんだよね。 greylist導入した後のログ解析してみると判るけど。 実際の所、10分くらい後とかが実用的かも。 Grey て仕組みというか発想はいいんだけど遅延したからって バカみたいに連投するやつおるから困る。 そんな俺は Queue に貯まったら速攻押し出してるだめな人。 いつの間にかリアルタイム性が必要となってきたからねぇ 携帯メールは色々な意味で想定外 確かにリアルタイム性を要求されることも増えてきました。 >>155 さんのアドバイスを参考に、とりあえずdelay=600にしました。 後はログを見ながら微調整します。 spam判定は後段でフィルターを入れて通過したメールに対応することにします。 周りに相談出来る人が居ないので、ここで話を伺えたことがとても嬉しかったです。 皆様、貴重なご意見をありがとうございました。 これから後段の設定に移ります。 組織的に 「メールを送信してから組織外に出ていくまで、誤送信を取り返せるように敢えて約30分間の遅延時間を設けています」 とか言っちゃうのがいいのかもね 電子メールが即時届くと思ってるやつとかもう阿呆かと馬鹿かと・・・ メールを出した直後、「読んだ?」と携帯に電話を入れてくるやつとかね… まあ時代の流れだねえ。 メール届くのに1分くらい掛るんだけど、とか問い合わせもらったことあるよ。 virtualなメールにprocmail使うには /etc 以下に procmailrc 書かないといけないらしい procmailrcで, $HOMEがある文字列(ユーザー名)を含むなら $HOME/.prcmailrcを(includeして?)実行しろ という記述はできないのでしょうか すごくいい加減な提案なんで間違ってたらゴメン procmail は引数でrcファイルを指定できるんでしょ。 > virtualなメールにprocmail使うには というのが具体的にどうやっているのか知らないけど master.cf の配信エージェントの設定とかでやってるのなら そのときにユーザー名はわかるわけだら、なんとかなるんじゃない? 長々と書いたけど要はprocmailの引数で $HOME/.procmailrc を指定しちゃえよってこと。 postfix のログのqmgrプロセスで from=<>となるのってどういった理由でしょうか? linux での mail コマンドや sendmail 使うと from=<unixユーザ名> になるんですが、ここがブランクってどうやれば再現できるでしょうか? (どのようにすれば強制的にunixユーザを表示させるようにできるでしょうか?) 送信ユーザが特定できなくて困ってます。 エラーの通知とか開封確認とかでは(それに対して更に返信されることを 防ぐため)envelopeのfromは空白にする決まりだが。 そういうのじゃなくて? spamで空白にして送ってくるのもあるな。 レンタルサーバーにpostfixを入れることって可能ですか? 今、スピーバーの共有鯖を使用中なのですが、稼働中のsendmailを停止させ、postfixにすることが可能かどうか調べています。 サーバー情報です。 Red Hat Enterprise Linux ES Sphera Hosting Director どの様な方法で出来るか?を3日間ぐぐっていましたが、基礎的な部分が抜けているのか、 そもそも不可能だから何処にも記載されていないのか?と思い始め質問させて頂きました。 >>168 なぜその鯖業者にきかない? 可能かはともかく、不可能だったら「不可能」くらいは教えてくれると思うが postfix2.2使ってるんですが、 ログに pickupプロセス部分(postfix/pickup)が残りません。 その他、postfix/smtpd や postfix/qmgr は残ります。 プロセスを見てみると、 pickupは動いてるようなのですが。 ログ設定とかあるのかと調べてみましたが、debug_peer_levelくらいしか 見つかりません。どなたかお助けを。 うちでは pickup のログはめったにでません。 pickup の出番がないだけじゃありませんか? sendmail コマンドを直接使ってログが残るかどうかやってみましたか? Apr 18 10:49:30 xxxxxxx postfix/pickup[5820]: 5086A55006E: uid=0 from=<root> こんなのが出るはずです。 Mac OS X Server 10.4のメールサーバでmbox形式で運用ってできます? SunOS5.6のsendmailから移行するのに、imapフォルダは各ユーザのホーム下 にあって、受信メールだけ/var/mail/USERNAME形式。 周辺サーバがpop/imap担当してて、こいつは受けるだけなんで。 /etc/postfix/main.cfで mail_spool_directory = /private/var/mail #home_mailbox = Maildir/ として、 root# postfix reload で、メールを送ってみると・・ root# sendmail user_hoge@localhost (user_hogeのアカウントはbindしてるnisに有る) test . root# /var/log/mail.logには data format error. Command output: user_hoge: Mailbox does not exist と出てます。postfixは 2.3.16をソースから展開して make upgrade としたものです。 どなたかかヒントでもありませんか? imapフォルダがホームディレクトリにあるならpostfixも、そこへ配信してやらないと最終的には困るんじゃないかと思いますが、それは置いといて。 /private/var/mail ディレクトリは存在していますか?またパーミッションはどうなってますか? postfixはユーザーの有無をNISを見るように設定されていますか? local_recipient_maps の設定はどうなってますか? postconf -n で設定を見てみて。 >>171 sendmail等試しましたがでないようです 他のOS環境で試したら出たので、 どこかが影響している気がするのですが。 postfix stop echo sage | sendmail root postfix start ログ見れ Postfixのログ設定についてアドバイスを下さい。 クライアントPCが <"test@example.com> という誤ったメールアドレス宛 (正しいアドレスは<test@example.com>) に送信しようとした際のmaillog をもう少し詳細に出力させたいと考えています。 SMTPのセッションにおいて、PostfixはクライアントPCに 501 5.1.3 Bad recipient address syntax と通知してQUITするものの、maillogには Apr 23 09:46:00 sv2 postfix/smtpd[1416]: connect from unknown[192.168.1.1] Apr 23 09:46:02 sv2 postfix/smtpd[1416]: disconnect from unknown[192.168.1.1] としか出力されません。 Sendmailの場合だと Apr 23 09:42:37 sv1 sendmail[15434]: n3N0gbdx015434: <"test@example.com>... Unbalanced '"' Apr 23 09:42:39 sv1 sendmail[15434]: n3N0gbdx015434: from=<test@test.example.com>, size=0, class=0, nrcpts=0, proto=ESMTP, daemon=MTA, relay=[192.168.1.1] と出力してくれるのですが、Postfixでもこのような事は可能でしょうか? なお、main.cfのdebug_peer_levelとdebug_peer_listを設定することで 詳細ログが出力されるのは判ったのですが、この方法だと出力されるログ の量があまりにも多すぎてしまいます。 他に良い方法があればアドバイスを頂きたいと思います。 どうぞよろしくお願いします。 >>176 該当のエラーを返してるのはsmtpd.c内の3箇所だからそこにmsg_infoでログ出力を追加すればオケ すんません 先週からrejected が急激に増え 1000通/1日 近く来るようになったのですが・・・ Sender address rejected: Domain not found (1247) 放っておいて問題ないでしょうか? >>178 それって、 「架空のアドレス(ドメイン)から送られて来ているSPAMだから捨てますよ」 ・・って事じゃ 最近SPAMが急増するような覚えは? そのホストが参照しているDNSが死んでるとか・・・ 一応解決しました。 /etc/postfix/main.cf にある以下の記述をコメントアウトしてやったら動きました。 #mailbox_transport = cyrus #mailbox_transport = smtp これだけでした。 これはサーバー管理アプリでメールを終了・起動するとまた書き込まれます。 だもんで、コントロールは postfix start ってやります。 OS再起動時はどうしよう・・。困った。 残念ながら、nisユーザはアカウントマネージャで見てもメール使用不可と出ています。 pop/imapでアクセスしてもダメでした。 この件について、何か情報ありませんか? SSL&SMTP-AUTH(ポート465)にて送信する専用のサーバがあるのですが、 受け付けたら内部のサーバに転送というものを行っています。 masterの設定は適切に行われているので、認証後にのみ送信できています。 relay_domains = $mydomain relayhost = 192.168.1.1 以上の設定でどのような宛先でもrelayhostへ送信しています。 もちろん、この動作は歓迎すべきなのですが、 relay_domains = $mydomain これを設定していると「自分のドメイン宛」のみrelayhostへ飛ばすと解釈できるのですが、 なぜすべてのドメインがrelayhostへ飛ぶのでしょうか? relayhostがあれば、relay_domainsは無視するのでしょうか? >>182 俺はあんまりPostfixに詳しいわけじゃないけど、たぶん考え方が逆。 > relayhost = 192.168.1.1 これが設定してあると、「自分宛以外」のすべてのメールをrelayhostに渡す。 さらに、 > relay_domains = $mydomain が設定してあると、$mydomain宛のメールもrelayhostに渡すようになる。 mydestination = $myhostname, localhost, $mydomain みたいにmydestinationに複数設定してあると、$mydomain以外で自分宛と 見なされるメールはローカルのメールボックスに配信されるはず。 >>182 正確な説明ではありませんが、ざっとこんな感じとして聞いてください。 postfix は許可されていないリレーは行いません。つまり自分宛のメールしか受けつけません。 自分宛のメールとは mydesitination で指定されているものです。 リレーが許可される条件は 2つあって、一つは mynetworks から送られてきたものです。 通常 mynetworks には内部LANが指定されています。 もう一つの許可条件が、そのメールが relay_domains 宛ての場合です。 relayhost はローカルに配信するのではないメールを送るホストです。 直接インターネット上のメールサーバーへ送ることができる場合は設定する必要はありません。 > 受け付けたら内部のサーバに転送 とのことですが、まさにそういう場合に内部のサーバをrelayhostとして設定します。 >>182 補足しておきます。 > relay_domains = $mydomain > これを設定していると「自分のドメイン宛」のみrelayhostへ飛ばすと解釈できるのですが、 relay_domains の設定は、自分のドメイン宛てのみをrelayhostへ飛ばすという意味ではありません。 > なぜすべてのドメインがrelayhostへ飛ぶのでしょうか? relayhost が設定されていれば(ローカルに配信する以外の)すべてのメールをrelyahostへ飛ばします。 > relayhostがあれば、relay_domainsは無視するのでしょうか? relyahost を指定することと relay_domains の設定は別々のものです。 >>183-184 ご丁寧にレスをいただきまして、ありがとうございます。 いただいたアドバイスとmain.cfの英語を自分なりに解釈してほぼ理解できました。 送信用サーバ(25 & 587)と受信用サーバ(110 & 995)を用意していて(ローカル内のNASにメール保存) 証明書が受信用サーバにしかないので、smtpsを受信サーバ:465に追加設定しようとしたことがことの始まりです。 main.cfは、ほぼデフォルトで master.cfを smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject_unauth_destination と設定しました。 SSL接続&smtpd認証ができれば、すべてのメールはrelayhostである送信サーバにrelayして、 SSL接続&smtpd認証ができなくても、relay_domainsに記載したドメインであれば、relayできました。 もちろん運用は前者です。 少しずつ拡張ができて楽しくなってきました。 ありがとうございました。 最近ローカルネットワークを装った?ホストから接続要求が 来てるっぽいんですが、みなさんどうやって対応してるんでしょうか? たとえば名前解決で127.0.0.2のように設定してある外部ホストから 接続を試みられるとpostfixがローカルネットワークと誤認して 中継を許してしまうようなんですが。 ローカルネットワークは制限すればよいとして、 ローカルホスト、つまり127.0.0.1を 設定されたホストから中継されたらどうしようもないような。 ローカルからも認証要求するようにしたら恐ろしく使い勝手が下がりますし。 ip spoofingはipfwとかiptablesで蹴るべし >たとえば名前解決で127.0.0.2のように設定してある外部ホストから >接続を試みられるとpostfixがローカルネットワークと誤認して ねーよ。 正引きで127.0.0.2に解決されるとしても、 接続を受ける側は正引きじゃなくて逆引きするんだから関係ない。 >>191 そういえば、個人サーバとかでメールサーバとwebサーバ兼用していると、 webの脆弱性を足がかりに、cgiを設置されたりしてspam配信元になったり することもあるね。 ソースアドレスを127.0.0.2にしたTCPパケットを送ってこられた場合、それに 対する応答はどこへ送ることになるのだろうか? 187、質問投げるだけ投げておいて消えたか。いかにも頭が悪そうな質問だなぁ と思ったら、やっぱり頭が悪かった。 本当はPostfixの話題じゃなくてmail一般の話題なんだけどごめんなさい。 適切なところに誘導してくれるとうれしいです。 今、携帯電話に職場で連絡メールを送ることがあるんですけど、 なんか、送ってくれる人が少人数ずつ分けて送ってくれてるみたいなんです。 携帯メールは良く知らないですけど、結構大変そうです。 で、職場のメールサーバのailiasに設定すれば省力化になるし、連絡担当者が変わった場合でも 混乱が少ないかなぁ。と思っています。 で、質問なのですが、 確か、もう大昔かも知れませんが、携帯メールをいっぺんに送ろうとすると拒否られるって話を聞いた覚えがあります。 これって今もなのですか ? また、こういう場合ってどういう方法が一番モアベターなのですか ? 教えてくだしあ。 ほしゅほしゅ Postfix 2.6 とか来てたからぶっ込んでみた。 日記終わり。 read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる