Postfix(8)
Postfixスレッド その7です。 ●リンク 本家 http://www.postfix.org/ Postfix のぺーじ (ドキュメントの日本語訳、MLなど) http://www.kobitosan.net/postfix/ 過去スレ、関連スレなどは>>2-4 あたり Maildir形式で運用しているのですが、任意のユーザだけをmbox形式にできますか? どなたか設定方法を教えて下さい。 Windows7上のThunderBird10.0.0.1からPosiftx2.9.0.1経由でメールを出そうと すると、ThunderBirdでは 5.1.7 Bad sender address syntax と言われ、postfixでは warning: Illegal address syntax と言われてしまいます。"telnet localhost 25" でpostfixに繋いで、HELOから のコマンドを直接叩く分には特にエラーにならず、メールも正常に送信されまし た。両テストのメールアドレスは括弧<>有無等も含めて完全に同じです。 PostfixはSSL対応で設定していますが、上記のテストは非SSLで行っています。 メールはOCNのサーバ経由での送信となりますが、後者のテストではOCNのメ鯖経 由で正常に送信出来たのでrelayの設定は大丈夫かと思います。 エラーの原因について何か考えられる事はありますでしょうか? >>647 どんなミスをしたらそうなるのか知りたい。煽りではなく。 なんでそんなことが起きてしまうのかさっぱり想像がつかんのだが、 もしも簡単にそんなことができてしまう罠があるのであれば、 ユーザサポートとかもやる立場としては知っておきたい。 つーか、bad address syntax が出るような設定ができてしまうってのは、 設定ミスというより Thunderbird がバグってるということでは。 >>648 fromが間違ってたのかな? postfixも、そのチェックをするかは任意なんだし。 master.cfにこのように記載して ---- smtp-192.0.2.1 unix - - n - - smtp -o smtp_bind_address=192.0.2.1 smtp-192.0.2.2 unix - - n - - smtp -o smtp_bind_address=192.0.2.2 ---- transportでsmtp-192.0.2.1を指定して送信したりして楽しんでいるんだけど。 syslog_nameってmaster.cfで上書きできないの? 例えばこうあって書いてもメールログでhogehoge/smtp-192.0.2.1とならず potfix/smtpってなってしまう。 ↓ smtp-192.0.2.1 unix - - n - - smtp -o smtp_bind_address=192.0.2.1 -o syslog_name=hogehoge これって仕様ですか? ここを参考にしました。 ttp://ya.maya.st/d/200809b.html 最近のバージョンならその設定で hogehoge/smtp ってな感じのログが出るようになるよ。 昔のバージョンではたしかにできなかった。どのバージョンが境かは忘れた。 ln -s smtp smtp-192.0.2.1 と symlink を張っておいて、master.cf を smtp-192.0.2.1 unix - - n - - smtp-192.0.2.1 -o ... てな感じにすると postfix/smtp-192.0.2.1 みたいなログが出るかもしれない。 ただ、smtpd ではこの手が使えるけど、smtp は最近のバージョンでは lmtp とバイナリが共有されて呼ばれる名前によって挙動が変わるようになったので、 そのどちらでもない名前で呼ばれるようにするのはできたとしても推奨はしない。 >652 神ですね。 ちょうど最近のバージョンで試してみたら出るようになりました。 ありがとうございます。 久々に入れてみたけど未だにVDAパッチいるんだな なんとかならんのかこの状況 >>654 VDAってこれ? http://vda.sourceforge.net/ Brings per mailbox/maildir quota support to Postfix VDA Support for Courier style maildir format, including maildirsize file Limit either only INBOX or whole maildir Customizable bounce message, used if mails are bounced (it's also an option) Customisable suffix for Maildir support, sometimes needed for Courier IMAP Enhanced patch delivery abilities using vfilter 特定の環境以外では使わない気がするのだが その特定の環境の真っただ中にも生命は存在するわけで そのパッチとやらは取り込みを拒否されてるの? そうでないなら黙れクズ!だな 本体へのパッチじゃなくて、Dovecot のみたいに lmtp 喋る MDA にすりゃいいのに。 SMTP-AUTHのユーザ名がxxxのとき、 From:xxx@zzz.comのみを許可 のように、ユーザ名を利用したsender制限は可能でしょうか? 確か出来るはず。 なんだったかなあ。 reject_sender_login_mismatch と smtpd_sender_login_maps か。 smtpd_sender_login_maps は LDAP に出来るんだったかな? >>660 ポインタありがとうです ちょっくら調べてみます Postfix+Dovecotでバーチャルアカウント対応のメール鯖を構築しました。 クライアントからメールをチェックする時に、 hoge とアカウントだけで認証すると普通に通るんですが hoge@xxx.jp とドメインを付けると認証をはねられます。 そのためmail_locationで%dが使えないんですが、後者でも認証を通す方法はありますか? %dを使わなければいいだけなんですが、ちょっと気になるので… >>662 お前さんが求めているエスパーはこのスレにはいないぞ・・・ 質問に答えて欲しいなら、もう少し情報を書いて方がいい すみません、dovecot.confのuserdb passwd-fileとuserdb passwdのところを 間違えて設定していたからでした… 最近、管理しているメールサーバーでヤフーメールが非常に流れが悪い。。 今って厳しくなっているんですかね。 Nov 21 20:49:15 mxmax postfix/qmgr[23092]: 61515226CEE: to=<****@yahoo .co.jp>, relay=none, delay=1405, delays=1325/80/0/0, dsn=4.7.1, status=deferred (delivery temporarily suspended: host mx3.mail.yahoo.co.jp[183.79.57.237] refuse d to talk to me: 421 4.7.1 [TS03] All messages from XXX.XXX.XXX.XXX will be tempor arily deferred; If retrying does not succeed, see http://help.yahoo.co.jp/help/j p/mail/in_trouble/in_trouble-29.html) 自宅サーバーでpostfix動かしてるのだけど 自宅サーバー止めてるのにPOPできました name serverが乗っ取られているということでしょうか? まず666という番号が不吉だ。 postfixなどを動かしている自宅サーバーの電源を切ってあるにもかかわらずPOPで接続できてしまう、 という現象? 先日からdovecotスレでお世話になっている者なのですが、transportをdovecotにした際、pipeのエラーが出てしまい、メールが受信できません。 fatal: pipe_command: execvp /usr/lib/dovecot/dovecot-lda: Permission denied 3FE2D840CEA: to=<to@domain>, relay=dovecot, delay=0.43, delays=0.43/0/0/0, dsn=4.3.0, status=deferred (temporary failure. Command output: pipe: fatal: pipe_command: execvp /usr/lib/dovecot/dovecot-lda: Permission denied ) master.confは以下のように設定しています。 dovecot unix - n n - - pipe flags=DRhu user=vmail:mail argv=/usr/lib/dovecot/dovecot-lda -f ${sender} -d ${user}@${nexthop} -m ${extension} 「Permission denied」となっていますが、ディレクトリは全てvmail:mailになっており、どの部分に権限がないのかが分かりません。 何か不備があるようでしたらご指摘下さい。 よろしくお願い致します。 >> 674 ありがとうございます。 確認してみましたが、似たような策は既に行なっていました…。 OS環境は何ですか?postfixとdovecotはどうやってインストールしたのか気になります。 /usr/lib/dovecot/dovecot-lda になるのは Debian/Ubuntu かとも思いますが。 >> 676 Ubuntu 10.04 Serverです。 DovecotもPostfixもパッケージからインストールしており、MySQLを利用したバーチャルホスト環境です。 またドメインやユーザーの管理はPostfixAdminを利用しており、domainテーブルのtransportは"dovecot"にしてあります。 ただ、諸事情によりメールデータの置いてあるディレクトリは変更しています。 これが原因かと思い、最初にAppArmorを疑ったのですが、特に制限はされてませんでした。 >>677 > DovecotもPostfixもパッケージからインストールしており、 > ただ、諸事情によりメールデータの置いてあるディレクトリは変更しています。 とすると、変更してあるメールボックスの場所が問題になっている可能性は考えるべきでしょう。 10.04 ということはこれまでずっと運用してきたサーバーなのでしょうか。それとも現在構築中? dovecotの設定で mail_location はどうなってますか? >> 678 現在構築中のサーバーです。 データの場所は mail_location = maildir:/data/mail/data/%d/%n です。 あ、/dataは別パーティションなんですが、それが原因なんですかね? ちなみにpostfixのソケットが集まっているprivateディレクトリも/data下にあります。 とりあえず、 chown vmail:mail /usr/lib/dovecot/dovecot-lda でエラーはなくなり、LDAが動くようになりましたが、 振り分けフィルターが動かない状態です。 15-lda.conf: protocol lda { syslog_facility = mail mail_plugins = $mail_plugins sieve sieve=/enc/mail/data/%d/%n/.dovecot.sieve sieve_dir=/enc/mail/data/%d/%n/sieve } ログ: postfix/cleanup[32394]: 18B148403A2: message-id=<50D40B78.3090008@domain> postfix/qmgr[32082]: 18B148403A2: from=<from@domain>, size=285, nrcpt=1 (queue active) dovecot: lda(to@domain): msgid=<50D40B78.3090008@domain>: saved mail to INBOX postfix/pipe[32424]: 18B148403A2: to=<to@domain>, relay=dovecot, delay=0.1, delays=0.08/0/0/0.01, dsn=2.0.0, status=sent (delivered via dovecot service) postfix/qmgr[32082]: 18B148403A2: removed よろしくお願いします。 15-lda.conf: あ、間違えました。 protocol lda { syslog_facility = mail mail_plugins = $mail_plugins sieve sieve=/data/mail/data/%d/%n/.dovecot.sieve sieve_dir=/data/mail/data/%d/%n/sieve } です。 /data/mail/data/%d/%n/.dovecot.sievec /data/mail/data/%d/%n/.dovecot.sieve.log は? >> 682 両方とも存在しないです。 設定が足りてないのでしょうか? plugin { sieve=.... sieve_dir=... } では >> 684 今は以下のようになっています。 plugin { sieve = /data/mail/data/%d/%n/.dovecot.sieve sieve_dir = /data/mail/data/%d/%n/sieve } protocol lda {}と全く同じです。 >>685 そこにファイルが存在しなかったら振り分けできないと思う dovecotのスレも見たけどroundcubeの設定が悪いんじゃないの >>685 > protocol lda {}と全く同じです。 だとしたら protocol lda には mail_plugins = sieve が足りないことになりますが… 書いてあるんでしょうね。 mail_debug=yes を設定してlogを見てみましょう。sieveプラグインはロードされているでしょうか? Module loaded: /usr/lib/dovecot/modules/lda/lib90_sieve_plugin.so sieveファイルがないならないで、 sieve: user has no valid personal script こういうログが出るはずです。 お返事が遅くなりました。すいません。 >> 686 一応見なおしてみたのですが、特に設定項目はありませんでした。 >> 687 mail_debug=yesを設定したのですが、全くログが増えませんでした。 このあたりの設定が悪いのでしょうか? 10-logging.conf: plugin { mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename sieve mail_log_fields = uid box msgid size } よろしくおねがいします。 >> 689 dovecot.confに以下のように記述しています。 protocols = imap pop3 sieve postfixで、送信元のドメインを複数つかうことはできますか? 送信元をtest@a.example.comやtest@b.example.comのように使いたいです。 iosでプッシュで受け取りたいのですが、自前のサーバでそのようなことはできませんか? 自前のサーバーから転送すればいいのではないですか? そういう意味ではなくて、iOS上でpostfixを動作させてメールを受信したいという意味ですか? VDAパッチってまだインクルードされていないのね、なぜなんだろう。 もう 2.10 かよ マルチインスタンスとかロードバランサーとか全然要らん機能のせいで stable release のバージョン上がってまだ使ってるバージョンが サポートから外れるの勘弁してくれ もう、もクソもなく、毎年1月か2月にバージョンが上がるのは定例行事だから覚えとけ。 そうなんだけど 最近は欲しい機能もパラメータも無いのにサポートが切れるので仕方なく上げる感じでさ 他力本願の分際で何をほざくかなw イヤならそのまま使ってりゃいいじゃねーか 他力本願を貫くのなら、security fixはOSベンダー任せっていう手もあるしねい。 CentOS5.5でPostfix入れたんですが25番ポートが開きません。 どこを直せばいいか教えていただけませんか? レンタルVPSなのでOP25Bは無いと思います 長らく古臭い2.1を使ってたんだが(汗) 2.8にアップしたら、送信が5〜6倍速くなった >>703 iptablesで開ければいいだけでは? って、もうみてないか。 >>706 iptablesを止めてみても開きませんでした 自分側のOP25Bだったりして。 定石としてはnetstat -apして、あとはtelnet 127.0.0.1 25かな。 このごろはデフォルトだと inet_interfaces = loopback-only になってたりするのかも。 >>708 のtelnetでいけました。ありがとうございました 正引き出来てれば逆引き出来なくても通すという設定はどのように書けば良いでしょうか? 環境:FreeBSD 9.1R-p3 + Postfix 2.10.0 + dovecot 2.2.2 main.cf: local_recipient_maps = unix:passwd.byname $alias_maps btree:/usr/local/etc/postfix/case-sensitive_recipients local_transport = dovecot-cs master.cf: dovecot-cs unix - n n - - pipe flags=DR user=dovecot:dovecot argv=/usr/local/libexec/dovecot/dovecot-lda -d ${user} case-sensitive_recipients: Hoge OK という設定で、システムユーザーHoge, mokeについて moke→moke, Hoge→mokeは問題なくメールが配送されるが、 Hoge→Hoge, moke→Hogeは以下のエラーで配送されない。 postfix/pickup[394]: 9305D431: uid=1001 from=<Hoge> postfix/cleanup[400]: 9305D431: message-id=<20130610162824.9305D431@example.com> postfix/qmgr[395]: 9305D431: from=<moke@example.com>, size=325, nrcpt=1 (queue active) postfix/pipe[402]: 9305D431: to=<Hoge@example.com>, orig_to=<Hoge>, relay=dovecot-cs, delay=0.26, delays=0/0/0/0.25, dsn=5.1.1, status=bounced (user unknown) postmap btree:/usr/local/etc/postfix/case-sensitive_recipients もしたし、local_recipient_maps を空にしても症状変わらず。 最早自分の力では原因が分からないので、皆様のご意見を頂戴したく… postfix はローカルユーザの大文字を内部的に小文字に変換しますので。 Hoge ではなく、hoge ユーザのメールを /home/Hoge/Maildir なり /var/mail/Hoge とか そのへんに配送するように設定するのがよさげ。 >>716 その小文字問題を回避しようと http://www.postfix-jp.info/origdocs/QandA.html#2.16 を参考にlocal_recipient_mapsとlocal_transportを設定してみたんだが、 上手く行かんのよねー。-fを忘れてpostmapしていたので、-f付きでdbを 作ったり、regexpで指定してみたりもしたが変化なし。 もしかして上記サイトの解説がおかしい?(古い?) 仰る通りhogeをでっち上げるしかないのかな… >>717 その小文字問題ってpostfixのlocalデーモンで発生することなんでひょ。 dovecotも使っているのならdovecotのdeliverでもだめかニャー できたーーーー!! dovecotがユーザー名を小文字化してくれやがってたのが原因だった。 2.1.0のリリースノートに「auth_username_format default changed to %Lu.」と書いてあった。 10-auth.confのauth_username_formatを空にすると、2.0以前の動作(大文字小文字を変換しない) に戻り、無事、大文字を含むローカルユーザーに配信出来た。 まさかdovecot側とはなぁ……罠過ぎるorz 色々試してみた所、結局Postfixのlocal_recipient_mapsは弄らなくても大丈夫っぽい。 unix:passwd.byname $alias_mapsだけで届いちゃってるわ。 これはこれで謎だが、まぁ目的は達したので気にしない。 有り難うございました。 iptablesを設定してるんだけど、ポート25のUDPって必要かな? 内部でメールをリレーするのに使うなら、TCPだけでいい気がするんだけど、他になにか使うの? ありがとう、見てみたら使ってなかった。 そうやって調べるのね。 postfixのsendmail(1)をシェルで直接叩いて送る方法の 送信数制限ってできますか?(汗) postfixで何とかするなら anvil にローカル発信数管理機能を追加して pickup が anvil と連携して送信数制限するってのはどうよ って、せっかくオープンソースなのに、改造すれば?っていうとみんな逃げちゃうんだよなぁ なら non_smtpd_milters か content_filter で送信数制限するフィルター通すとか? (汗) smtpd_client_restrictionsの設定で permit_mynetworksとpermit_sasl_authenticatedをAND条件にしたいんだけど どう書けばいい? smtpd_client_restrictions = permit_x, permit_y の書き方だと、結局orと同じようになっちゃうので mynetworks を 192.168.0.0/24 と仮定して smtpd_client_restrictions = check_recipient_access hash:/etc/postfix/mynetwork-and-saslauthenticated, reject mynetworks を 192.168.0.0/24 と仮定して /etc/postfix/mynetwork-and-saslauthenticated 192.168.0 permit_sasl_authenticated, reject こんな感じでは出来ないかなあ。やってないので、うそかもしれん。 あとは、iptables 等で mynetworks以外をDROPするとか。 CentOs6.2にPostfixをインストールしてリレーチェックとかして一応安全な環境で使っているのですが、 デフォのキュー残存タイムが5dと長いので2日位にしようと main.cfに以下の2行を追加しました。 bounce_queue_lifetime = 2d maximal_queue_lifetime = 2d postfix reload して postconf -d | grep lifetime で見ても以下のとおり適応されていません。 bounce_queue_lifetime = 5d maximal_queue_lifetime = 5d ちなみに編集ミスかと思い、webmin 経由でも変更してみましたが同じでした。 何か別の項目とのあわせ技が必要なのでしょうか? -d は現在の設定値じゃなくてデフォルト値の表示じゃボケが。 >>728 smtpd_client_restrictions = permit_mynetworks, reject smtpd_recipient_restrictions = permit_sasl_authenticated, reject でいいんじゃね? こう書けば permit_mynetworks にマッチしなかったものは permit_sasl_authenticated の判定前に reject されるので、AND になる。 >>732 > -d は現在の設定値じゃなくてデフォルト値の表示じゃボケが。 うぎゃー マジ勘違いしてました。 SPAM対策として mtpd_helo_required = yes strict_rfc821_envelopes = yes reject_unknown_client reject_non_fqdn_recipient を追加してみたのですが、これって通常利用による弊害って考えられますか? しばらくログ覗いてると reject_unknown_client で引っかかるのは結構ありすね。 read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる