Movatterモバイル変換


[0]ホーム

URL:


Postfix FAQ

以下のFAQは主としてPostfixメーリングリストから持ってきたものです。メーリングリストについての情報はPostfixの公式ウェブサイトにあります。これはPostfix: TheDefinitive GuideのAppendixにあるFAQをさらに拡張したバージョンで、今も成長し続けています。IKEDA Nozomu によって日本語に翻訳されています。このページに対して何か質問やコメント、提案があれば、それらを私 <kdent@seaglass.com>に送ってください。

質問は以下のカテゴリに分類されています:

*Postfixメーリングリスト*Postfix のコンパイル
*一般的な質問*エイリアス
*エラー・警告メッセージ*メールキュー
*ロギング*DNS問題
*バーチャルドメイン*UBEブロック
*アンチウィルス

FAQ全体がこのHTMLファイルに含まれているので、FAQ内の検索にはブラウザの検索機能が使えます。

(訳注: これは Kyle Dent さんがまとめたPostfix の FAQを、許可をいただいて日本語に翻訳したものです。翻訳に関する質問等はKyle さんではなく、ike@kobitosan.netまでお送りください。)


(元になった原文の)最終更新: Sat Jul 24 17:31:03 2004

Postfixメーリングリスト

1.Postfixメーリングリストの購読をやめるには?
2.メーリングリストにメッセージを送ったのに返事がありません。他の多くの質問には返事があるのに。私は...

Postfix のコンパイル

3.make を実行したらこんなエラーがいっぱい出ました:gcc -Wmissing-prototypes -Wformat -g -o -I....

一般的な質問

4.接続してきたクライアントにgreetingを送る時にPostfixが使うバナーを変えるには?
5.Postifxがバウンスメッセージを送るときに、送信者に"Forfurther assistance, please send ...
6.ソースコードを修正するにはどうすればいいの?
7.mbox形式とMaildir形式のメールボックス、どちらがよいでしょう?
8.main.cfに'include'ディレクティブみたいなのはないですか?
9.メールの配送確認を受け取ることはできませんか?
10.特定のアドレスがemailメッセージを受け取るたびに、自動的にリプライを送るようにする...
11.私のメールサーバから送られるすべてのemailの最後に免責条項(やその他の文章)を...
12.すべてのメッセージのコピーを取っておくには?
13.ユーザのメールボックスにクオータやサイズ制限をかけるには?
14.私のドメイン名がヘッダ中のあるアドレスについてしまうのはなぜ? 例えば、Pos...
15.私のPostfixが特定の機能付きでビルドされたかどうかを知る方法は? パッケージから...
16.Postfixを25番以外のポートでlistenさせるには?
17.Postfixバージョン1.xxと2.xxの主な違いは何?
18.わかった。でも主に設定ファイルが心配なんです。アップグレードするときにどうすればいいの?
19.私のシステムにはいくつかのインターフェースがあるんだけど、そのうち一つだけにPostfixをbindするには?
20.Sendmailでは4時間メッセージを配送できなかった時に警告を受け取っていました。Post...
21.mailbox_transport と mailbox_command の違いは何?
22.我々の内部システムはすべてメールゲートウェイを中継します。メールが外に出て行く...
23.存在しないメールボックスに送られたすべてのメッセージを特定のユーザに転送するようにPost...
24.わかった。じゃあ、Postfixにまずすべてのメッセージを受け取らせて、それから存在しない...
25.設定ファイルや検索テーブルを更新したときに、Postfixをリロードする必要はあるの?
26.Postfixに恒久的なエラーコード (554)を返すように設定したはずなのに、一時的なエラ...
27.うちにはよく外出しているユーザが何人かいます。オープンリレーにしないで彼らが私のサーバ...
28.次のような制限をmaster.cfファイルのsmtpd制限に加える必要が出てきました: -o sm...
29.クライアントがsmtpdサービスに接続するとき常に長い遅延が生じてしまうようです。接続を確立して...
30.SMTPD で外からの接続を受け付けないようにして Postfix を動かすことってできるの?...

エイリアス

31.エイリアスにあるリストの最初のアドレスだけがメッセージを受け取れます。でも、それ以外...
32.このようなエイリアスで、info: peter,heloise 誰かがメッセージを info と peter の両方に送る...
33.あるリストから展開されるアドレスが何かを知るためにエイリアスリストのテストをしようとして...

エラー・警告メッセージ

34.メッセージを受け取れないようです。このエラーの意味は?:"<test@example.com>: mail fo...
35.なぜこんなメッセージがログに残っているの? そのファイルはみんな /etc にあるはずでしょ? warnin...
36.知らないユーザにメールが届くと、Postfixは "Useruknown in (local|virtual|relay) rec...
37.こんなのを受け取りました。 postfix/smtp[18860]:fatal: unknown service: smtp/tcp 何が問題なの?

メールキュー

38.必要ないって分かってるメールがキューにたまってるんだけど、何か消す方法はない?
39. mailq と postqueue の間に奇妙な違いがあることがわかりました。mailq コマンドはキュー...
40.メッセージが期限切れでバウンスされずにとどまっている時間って変えられないの?
41.ある時間経ったら個々のメッセージを期限切れでキューから消すようにする方法ってないで...
42.以前設定に問題がありました。今は直っていますが、システムは古い、間違った設定を使っ...
43.キューにたまっている大量のメールが、実際のemailアドレスではなく"MAILER-DAEMON"が...

ロギング

44.Postfixはどこに情報をログとして記録するのですか?
45.To や From アドレスのような他の情報と一緒にメッセージのサブジェクトをPostfix...
46.メールに何が起こっているのかを正確に知るための、デバッグオプションや冗長ログを記録...
47.Fromアドレスに関するエントリが、私のログには見あたりません。どうなっているのでしょう?
48.Postfixのログエントリを解析するのに便利なプログラムってない?
49.私が使っているウィルススキャンの方法では、すべてのメッセージがPostfixに再投入されます...
50.システム時計は正確なのに、メールログエントリは違う時刻になってしまいます。何が問題なの?

DNS問題

51.ホストが見つからないっていうエラーを受け取ったんだけど、検索してみたら答が返ってきま...
52.私の場合、host -t MX example.comをやってみました。私は答を得られたのに、Postfixは "Host...
53.PostfixがMXレコードを無視してAレコードのシステムに直接配送しようとしているみたい。...

バーチャルドメイン

54.バーチャルエイリアスでプログラムにメッセージを配送する方法ってある?
55.postmaster というアドレスのようなグローバルなバーチャルエイリアスをつくって、私...

UBEブロック

56.助けて! オープンリレーになってるみたい。ログにこんなメッセージがたくさん書かれ...
57.助けて! オープンリレーになったかもしれない。どうやってチェックすればいいの?
58.助けて! 間違いなくオープンリレーになってしまった。いろんなブラックリストに載っちゃっ...
59.エンベロープ送信者アドレスに何もないspamをたくさん受け取ったんだけど、これってブロッ...
60.ある送信者アドレスをブロックするように制限しました。なぜ制限された送信者からのメッセー...
61.header_checks や body_checks のどのエントリがメッセージを拒否したのか、知る方法...
62.応答しないサーバから存在しないユーザ宛のメールがたくさん来てしまい、存在しないサー...
63.本体やヘッダのチェックを設定に加えて、あるサブジェクト行や添付ファイルをブロックする...
64.たくさんのウィルスを止めるために、本体行チェックをいくつか設定に加えました。だいたい...
65.header_checks や body_checks を使って条件比較はできますか?例えばこんな感じで:...
66.header_checks や body_checks を使ってspamをブロックしているのですが、正当なemailまで私の...
67.わかった。でもログからブロックされた文字列を含んだレポートを受け取れるようにしたいだけ...
68.spamをブロックするためにブラックリストの一つを使ってて、それはうまくいってます。でもう...
69.header_checks や body_checks で作った正規表現って、どうやってテストすればいいの?
70.もし、accessマップであるドメインをexample.com REJECT No spam acceptedのようにブ...
71.strict_7bit_headers = yes を設定している人はたいてい成功しているの?
72.DNSに2つMXホストを設定してます。最初のMXシステムには大量のスパムチェックをセットアップしたんだ...

アンチウィルス

73.ある添付ファイルを、ファイル名の拡張子に基づいてブロックすることってできるの?

Postfixメーリングリスト

1.(訳注: 本家の)Postfixメーリングリストの購読をやめるには?

メッセージの本文に "unsubscribe postfix-users"と書いたメールを <majordomo@postfix.org> に送ってください。こんなメッセージになるはずです:

To: <majordomo@postfix.org>From: <you@yourdomain.com>Subject:unsubscribe postfix-users

[Back][Top]


2.メーリングリストにメッセージを送ったのに返事がありません。他の多くの質問には返事があるのに。私は何か間違ったことをしたのでしょうか?

実際には、Postfixメーリングリストでは返事がもらえないことはほとんどないです。かなり寛大なリストなので。でも、確実に答がもらえるように、十分な情報を提供するための基本的な投稿ルールをいくつか挙げておきましょう:

  1. 意味が広すぎる "うまくいきません" メッセージは送っちゃダメ。問題を詳しく説明してください。リストへのメッセージの原稿では、あなたの問題を解く側のことを考慮しましょう。あなたが問題の要因かもしれないと思った、該当するログエントリや設定の情報、その他あなたの環境の詳細を示してください。

  2. 常にpostconf -n の出力結果を送りましょう。あなたが問題に関係ないと思っていても、その設定の中に、リストのエキスパートがすぐに答を出せるようなちょっとした情報があるかもしれません。リストのメンバーには、十分な情報がない質問には答えたくない人もいます。

  3. プレインテキストのメッセージを送りましょう。HTML を解釈しないメールクライアントを使っていて、HTML で書かれたメッセージを読みたくないリストのメンバーもいるので。

  4. すでに存在するスレッドを新しい質問でハイジャックしてはいけません。新しいメッセージを始めてアドレスにタイプしましょう。タイプ量が多いのであれば、アドレスブックに登録しておきましょう。

[Back][Top][Feedback]


Postfix のコンパイル

3.make を実行したらこんなエラーがいっぱい出ました:

gcc  -Wmissing-prototypes -Wformat -g -o -I.  -I../../Include -DLINUX2 -c ...

どうやったらこのエラーを回避できるの?

これはエラーじゃないです。'missing-prototypes' っていう文字列は、プロトタイプが前で宣言されずにグローバル関数が定義されたら警告を表示しろってコンパイラに伝えるためのディレクティブです。あなたが見た行はビルドプロセスからの正常な出力です。

[Back][Top][Feedback]


一般的な質問

4.接続してきたクライアントにgreetingを送る時にPostfixがつかうバナーを変えるには?

smtpd_banner パラメータで設定します。デフォルトでは次のように設定されます:

smtpd_banner = $myhostname ESMTP $mail_name

普通はこのバナーを変えない方がよいでしょう。これを変えるにしても、最初の "$myhostname ESMTP" は規格が要求しているので絶対にそのままにしておくべきです。

[Back][Top][Feedback]


5.Postifxがバウンスメッセージを送るときに、送信者に"Forfurther assistance, please send mail to <postmaster>"と伝えます。しかし、そのアドレスに私のドメイン名を含めたい、つまり<postmaster@example.com> としたいのです。どうすればよいのでしょう?

これには通知を受け取った人たちが、その人のローカルのpostmasterに連絡を取るようにという意味が込められているのです。問題を扱う必要があるのはたぶん彼らなので。本当にこれを変えたいんだったら、ソースコードをいじる必要があります。

[Back][Top][Feedback]


6.ソースコードを修正するにはどうすればいいの?

そんな質問をする人は修正しちゃダメです。そのまま使い続けるか、修正してくれる C 使いを探しなさい。

[Back][Top][Feedback]


7.mbox形式とMaildir形式のメールボックス、どちらがよいでしょう?

場合によります。重要な点として、NFS越しにメール置き場をマウントするんだったら、mboxを使っちゃダメです。その他の点では、mboxはほとんど一般的にサポートされてるけれど、複数のプログラムがメールファイルにアクセスする必要がある場合にはファイルロック問題の影響を受けやすい、maildirフォーマットはファイルロック問題はなくなったけど、膨大な数のメッセージをサーバに置いておくユーザがいるようなシステムでは拡張性がないかもしれない、という感じです。

パフォーマンスを考慮しても、やっぱり場合によります。maildirでは特定のメッセージを読んだり削除したりする分には多分速いけど、メールファイルに新しいメッセージを追加するのはおそらくmboxの勝ちです。でもPostfixの観点からは、そんなのはたいした問題じゃないです。それよりもPOP/IMAPサーバに何を使うかとかの、他の要因で決めたらどうでしょう。全て同じだったら、たぶんmaildirを選ぶのがよいでしょう。

[Back][Top][Feedback]


8.main.cfに'include'ディレクティブみたいなのはないですか?

ないです。複雑な設定をするたいていの管理者は、必要なファイルをcat でまとめる Makefile を作っちゃいます。他に日常的な管理業務を持ってるなら、Makefileにそれも付けちゃいましょう。Makefile はこんなエントリになるでしょう:

main.cf: file1 file2 file3        cat file1 file2 file3 > main.cf.new        mv main.cf.new main.cf

そしてmake main.cf と叩いて、設定ファイルを再構築します。

[Back][Top][Feedback]


9.メールの配送確認を受け取ることはできませんか?

今のところPostfixではできません。

[Back][Top][Feedback]


10.特定のアドレスがemailメッセージを受け取るたびに、自動的にリプライを送るようにするもっともよい方法は?

Unixのほとんど全てのバージョンにはvacation プログラムが含まれていて、これがまさにその目的をかなえます。

[Back][Top][Feedback]


11.私のメールサーバから送られるすべてのemailの最後に免責条項(やその他の文章)を追加するには?

これはPostfixでは意図的に直接実装されてません。MTAの仕事じゃないし、MIMEやデジタル署名を考えると、思ったほど単純じゃないのです。MIMEメッセージには構造があって、それがとても複雑になりえます。デジタル署名は、署名されたメッセージが改変されていないことを署名するので、メッセージの最後にフッタを付けると、両方を壊すことになります。短い文章をemailメッセージのヘッダに付ける人もいるけど、多分ほとんどのユーザにはその分は見えないでしょう。クライアントを設定して、要求された文章を加えるのが本当の解でしょう。

そうは言ったものの、文を追加するようなコンテンツフィルタを設定することも可能です。以下はコンテンツフィルタを使うときのPostfix設定の注意点です。フィルタはMIMEを考慮しているべきです。また、あなたはデジタル署名は使えなくなることを認識しておくべきです。

[Back][Top][Feedback]


12.すべてのメッセージのコピーを取っておくには?

always_bcc パラメータにアドレスを指定しておきます。そのアドレスが全てのメッセージのコピーを受け取ります。バージョン 2.1 (とその前のスナップショット版) 以降だと、特定のユーザ宛のメッセージのみを保存するのに、sender_bcc_maps やrecipient_bcc_maps も使えます。

[Back][Top][Feedback]


13.ユーザのメールボックスにクオータやサイズ制限をかけるには?

ホントはPostfixの機能じゃないのですが、mbox-形式のメールボックスを使っているのであれば、求めているものはmailbox_size_limit パラメータで得られるでしょう。maildir形式のメールボックスを使っている場合には、このパラメータはメールボックス全体のサイズではなく、個々のメールファイルのサイズを制限するだけ、ということに注意が必要です。

通常のオペレーティングシステムやIMAPサーバの設定で実装される、メール格納場所で強制するメールボックスクオータがもっとも良い方法でしょう。IMAPサーバがLMTP越しにメッセージを受け取る場合、Postfixがメッセージを受け取るまでクォータを超える状況を検出できないので、バウンスされることになってしまいます。クォータを超えたユーザ宛のメールを拒否したいなら、クォータを超えたユーザをリストアップしたアクセステーブルを使う必要があるでしょう。

[Back][Top][Feedback]


14.私のドメイン名がヘッダ中のあるアドレスについてしまうのはなぜ?例えば、Postfixをインストールする前は以下のようなヘッダだったのに:

To: billy

それが今はこんなふうになっちゃいます:

To: billy@mail.example.com

Postfixは規定された完全装飾なヘッダを要求するので、不完全なアドレスは修正しようとするのです。append_at_myorigin = no を指定してアドレス補完をしないようにすることもできるけど、システムの他の部分で混乱を招くことになってしまうかもしれません。

もっともよい解決策は、ユーザがTo:From:ヘッダで正しいアドレスを確実に指定することです。そしてネットワーク越しに受け取った完全修飾アドレスがないメッセージは、reject_non_fqdn_recipient 制限をアンチspamルールの中に入れておきましょう。

[Back][Top][Feedback]


15.私のPostfixが特定の機能付きでビルドされたかどうかを知る方法は?パッケージからPostfixを取ってきたけど、SASLやTLSサポートが含まれているかどうか知りたいので。

SMTPDが何をサポートしているかチェックする方法の一つは、それを聞いてみることです。次を試してみてください:

$telnet mail.example.com 25Trying 192.168.100.11...Connected to 192.168.100.11.Escape character is '^]'.220 scallop.seaglass.com ESMTP PostfixEHLO localhost250-scallop.seaglass.com250-PIPELINING250-SIZE 10240000250-VRFY250-ETRN250-STARTTLS250-XVERP250 8BITMIMEquit

強調された行を入力してください。もちろん mail.example.com は自分のメールサーバのホスト名に置き換えて。

$ postconf -m

の出力結果も参考になるかも。サポートされた検索テーブルの形式が全て表示されます。

smtpd バイナリにコンパイルされたライブラリもチェックしてみましょう。多くのプラットホームでlddelfdumpみたいなライブラリを表示するコマンドがサポートされてます。

そして最後に、Simon Mudd がpostfinger というユーティリティを作っていて、これを使うとインストールされたPostfixに関する有益な情報がたくさん得られます。

[Back][Top][Feedback]


16.Postfixを25番以外のポートでlistenさせるには?

master.cf ファイルのsmtpd エントリにポートを設定します。必要に応じて、存在するsmtpd エントリを変更しても追加してもよいです。

An entry like the following causes Postfix to listen on port 10025:

10025      inet  n     -     n     -     -     smtpd

[Back][Top][Feedback]


17.Postfixバージョン1.xxと2.xxの主な違いは何?

“RELEASE_NOTES ファイルを読んでね。それを書いていると1週間の半分を費やしてしまうし、せっかく書いても誰も読んでくれないと悲しいから。” Postfix の作者、Wietse Venema。

ということです。

[Back][Top][Feedback]


18.わかった。でも主に設定ファイルが心配なんです。アップグレードするときにどうすればいいの?

もちろんアップグレードの前にバックアップを取りましょう。でも、make upgrade コマンドが自動的に今ある設定ファイルを更新してくれます。1.0 から 2.0 に行くときに、古いファイルをそのまま使おうとしてはいけません。

アップグレードして新しいバージョンになったとき、変更したくなりそうな互換性の調整が2つあります。一つはlocal_recipient_maps に適当なマップを設定するかデフォルトの設定を使うかという点と、もう一つはunknown_local_recipient_reject_code を恒久的エラー (554) に変更するという点です。

[Back][Top][Feedback]


19.私のシステムにはいくつかのインターフェースがあるんだけど、そのうち一つだけにPostfixをbindするには?

Postfixで使いたいインターフェースのIPアドレスをinet_interfaces パラメータに書けばよいです。

[Back][Top][Feedback]


20.Sendmailでは4時間メッセージを配送できなかった時に警告を受け取っていました。Postfixでは受け取れないのですか?

delay_warning_time パラメータがこれを制御してます。デフォルトでは送られないように0になってます。

[Back][Top][Feedback]


21.mailbox_transportmailbox_command の違いは何?

mailbox_transport パラメータはmaster.cf のサービスに対して設定されるのに対し、mailbox_command はメールサーバファイルシステムの実際のコマンド名を参照するのです。

メールボックス配送に影響するパラメータはいくつかあって、パラメータを優先度順に並べると、mailbox_transport,mailbox_command_maps,mailbox_command,home_mailbox となります。システムにユーザが見あたらないと、パラメータfallback_transportと続いてluser_relay が作用するようになります。

[Back][Top][Feedback]


22.我々の内部システムはすべてメールゲートウェイを中継します。メールが外に出て行く前に、メッセージヘッダから内部システムのホスト名やIPアドレスを削ったり隠したりする方法はないですか?

内部システムを示すようなヘッダ行にマッチして、そのアクションをIGNORE とするようなヘッダチェックを加えます。

/^received:.*192\.168\.144\.32/     IGNORE

[Back][Top][Feedback]


23.存在しないメールボックスに送られたすべてのメッセージを特定のユーザに転送するようにPostfixを設定するには?

luser_relay パラメータにアドレスを指定して、local_recipient_maps を無効にすればよいです。

luser_relay = infolocal_recipient_maps =

これをやる時は気を付けて。spamの蔓延によって、指定されたアドレスは大量のジャンクメールを受け取ることになってしまうので。

[Back][Top][Feedback]


24.わかった。じゃあ、Postfixにまずすべてのメッセージを受け取らせて、それから存在しないユーザ宛だとしてバウンスさせるには?

コツは単にlocal_recipient_maps を無効にするだけです。SMTPサーバは全てを受け取った上で、その直後にローカル配送エージェントがユーザがいないことを見つけ、そしてメッセージがバウンスされます。あまりそうすることはおすすめできないけど。サーバがバウンス通知を送ろうとしてしまうような、大量のジャンクを受け取ることになるし。アドレスを詐称された罪のない人に嘘のバウンスメッセージがあなたの(またはおそらく他の)メールサーバから殺到することになってしまいます。

[Back][Top][Feedback]


25.設定ファイルや検索テーブルを更新したときに、Postfixをリロードする必要はあるの?

更新したものの形式に依存します。

簡単な回答: Postfixが起動時にメモリに読み込むものはリロードが必要です。そんなファイルの例としては、main.cf やmaster.cf、正規表現を使った検索テーブルがあります。DB や DBM ファイルはメモリに読み込まれないので、更新してもリロードは不要です。inet_interfaces パラメータの変更の場合、reload では不十分です。この場合は Postfix を stop してからstart しないといけません。

完全な回答: ほとんどのPostfixデーモンは寿命が短いので、デーモンが期限切れになって新しく起動されるときに、実際には新しい設定が自動的に認識されてしまいます。でも、pickup やqmgr、もしかするとtrivial-rewrite みたいに長く動いているものはmain.cf の変更を検知しないので、そのデーモンが使うパラメータを変更するにはPostfixのリロードが必要になるのです。master.cf への変更は常にリロードが必要です。inet_interfacesパラメータの変更の場合、reload では不十分です。この場合は Postfix をstop してから start しないといけません。

この回答を寄せてくれた Vi[ck]tor Duchovni さんに感謝します。

[Back][Top][Feedback]


[Back][Top]


26.Postfixに恒久的なエラーコード (554)を返すように設定したはずなのに、一時的なエラー (454) を返します。なぜそうなるの?

きっとsoft_bounce = yes にしてるんでしょう。それと、DNSに一時的な問題がある場合にもPostfixは自動的に恒久的エラーを一時的なエラーに変更します。

[Back][Top][Feedback]


27.うちにはよく外出しているユーザが何人かいます。オープンリレーにしないで彼らが私のサーバを通してメールを送れるようにするには?送信者のアドレスが私のドメインからになっていたらリレーを許可するというだけではダメなの?

絶対ダメです。スパマーはあなたのサーバを使ってメールを中継させようとするときにあなたのドメインを使うことを知ってます。ユーザが静的なIPアドレスを持ってるんだったら、それをmynetworks パラメータに加えてしまいましょう。静的なIPアドレスを持ってないようなら、彼らが接続しているISPのSMTPサーバを使えないか確かめるのが最も簡単な選択肢です。それができないようだったら、SMTP AUTHやpop-before-smtpの1つを検討する必要が出てくるでしょう。

[Back][Top][Feedback]


28.次のような制限をmaster.cf ファイルのsmtpd制限に加える必要が出てきました:

-o smtpd_recipient_restrictions=check_recipient_access hash:/etc/postfix/recipient_access

check_recipient_access と検索テーブルの間に必要なスペースはどうすればいいの?

スペースの代わりにカンマを入れます:

...-o smtpd_recipient_restrictions=check_recipient_access,hash:/etc/postfix/recipient_access

それとも、main.cf に必要な全ての制限を持つ変数を定義して、master.cf で使ってもよいでしょう:

## main.cf#...other_restrictions =      check_recipient_access hash:/etc/postfix/recipient_access      reject_unknown_recipient_domain      ...

## master.cf#...-o smtpd_recipient_restrictions=$other_restrictions

[Back][Top][Feedback]


29.クライアントがsmtpdサービスに接続するとき常に長い遅延が生じてしまうようです。接続を確立してからPostfixが200バナーを送るまでに1分もかかります。なぜこうなるのでしょう?

この遅延はあなたのサーバのDNSリゾルバに原因があることがほとんどです。クライアントが接続するとき、Postfixは接続してきたクライアントのIPアドレスのホスト名を検索しようとします。リゾルバがちゃんと設定されていなかったりDNSサーバの応答が遅いと遅延が起こります。キャッシュのみのDNSサーバをPostfixサーバと同じシステムで動かすとよいでしょう。

リゾルバの設定ミスで最もよくあるのは、smtpdサービスがchrootされて動いていて、必要な設定ファイルが全てchrootの区画に揃っていないというものです。

[Back][Top][Feedback]


30.SMTPD で外からの接続を受け付けないようにして Postfix を動かすことってできるの?

できます。master.cf ファイルのsmtpd 行をコメントアウトします。

#smtp      inet  n       -       n       -       -       smtpd

[Back][Top][Feedback]


エイリアス

31.エイリアスにあるリストの最初のアドレスだけがメッセージを受け取れます。でも、それ以外は直接送られたメールは問題なく受け取れるのですが、エイリアスの一部になるとメッセージが届きません。

配送に外部プログラムを使ってるなら、それが同時に1アドレス以上を扱えないのではないでしょうか? そんな例が、例えばmaildrop の場合であります。Postfix が同時に1つのメッセージだけを配送するように渡すことにするためには、main.cftransport_destination_recipient_limitパラメータに1をセットします。transport は配送をおこなう配送方法(transport)の名前です。maildrop を使うなら、パラメータは次のようになります:

maildrop_destination_recipient_limit = 1

[Back][Top][Feedback]


32.このようなエイリアスで、

info:     peter,heloise

誰かがメッセージをinfo とpeter の両方に送ると、peter は2回メッセージを受け取ります。Sendmailを使っていたときは同じユーザに行く同じメールを検出して、そうはならなかったのに。Postfixで同じことができますか?

できません。Postfixのアーキテクチャでは、こういう重複を検出するのはとても負荷が高いのです。これは高レベルのセキュリティとパフォーマンスを持つマルチコンポーネントシステムと、こういった重複を簡単に検出できるモノリシックシステムの間のトレードオフなのです。

[Back][Top][Feedback]


33.あるリストから展開されるアドレスが何かを知るためにエイリアスリストのテストをしようとしています。他のメールサーバではEXPNコマンドを使って完全な受信者リストが得られたのに、Postfixでは動かないようです。

PostfixはEXPNをサポートしてません。Postfixのアーキテクチャとセキュリティ面での設計上、権限のないSMTPサーバはローカルエイリアスについて何も知らないのです。配送時に実際にエイリアスを展開するのは権限を持つローカル配送エージェントです。メーリングリストマネージャを使っているなら、リストに誰がいるかを知らせるコマンドがきっとあるでしょうし、そうでなければメールサーバシステムのエイリアスシステムをチェックする必要があるかもしれないですね。

[Back][Top][Feedback]


エラー・警告メッセージ

34.メッセージを受け取れないようです。このエラーの意味は?:"<test@example.com>: mail for example.com loops back tomyself"

PostfixはDNSの答があなたのサーバを示しているけど、サーバがそのドメイン宛のメールを扱うように設定されていない場合にこのエラーを報告します。Postfixはmydestination やrelay_domains、virtual_mailbox_domains、virtual_alias_domains にリストアップされたドメイン、そして解決したIPアドレスがinet_interfaces やproxy_interfaces にあるようなドメイン宛のメールを受け取ります。そのドメインはこれらのパラメータのうちのどれかに入っていないといけません。

[Back][Top][Feedback]


35.なぜこんなメッセージがログに残っているの? そのファイルはみんな/etc にあるはずでしょ?

warning: /var/spool/postfix/etc/services/services and /etc/services/services differwarning: /var/spool/postfix/etc/resolv.conf/resolv.conf and /etc/resolv.conf/resolv.conf differwarning: /var/spool/postfix/etc/hosts/hosts and /etc/hosts/hosts differwarning: /var/spool/postfix/etc/nsswitch.conf/nsswitch.conf and /etc/nsswitch.conf/nsswitch.conf differ

Postfixのコンポーネントがchrootで動いていると、そのコンポーネントから見えるファイルシステムはqueue_directory(デフォルト:/var/spool/postfix) 以下のサブディレクトリに制限されてしまうのです。システムリソースのいくつかはchrootされたディレクトリにコピーしなきゃいけなくて、しかもPostfixはシステムのものとchroot環境のものの同期が取れているかどうかチェックします。

[Back][Top][Feedback]


36.知らないユーザにメールが届くと、Postfixは "User unknown in(local|virtual|relay) recipient table." というメッセージを付けて拒否します。単にユーザが存在しないというようにすることはできない?

それは、管理者としてのあなたに問題の解決策について役に立つ情報を提供しようという考えによるものです。単に "User unknown."とするために、

show_user_unknown_table_name = no

とすることもできます。

[Back][Top][Feedback]


37.こんなのを受け取りました:

postfix/smtp[18860]: fatal: unknown service: smtp/tcp

何が問題なの?

ほぼ間違いなく、/var/spool/postfix/etc/services が見つからないか読めないのでしょう。

[Back][Top][Feedback]


メールキュー

38.必要ないって分かってるメールがキューにたまってるんだけど、何か消す方法はない?

#postsuper -d ALL

ALL はすべて大文字であること、そしてこのコマンドを実行してしまうとキューにある全てのメールを消してしまうことに注意が必要です。

[Back][Top][Feedback]


39.mailqpostqueueの間に奇妙な違いがあることがわかりました。mailqコマンドはキューには何もないって言うけど、postqueue はたくさんのメッセージを報告します。これってどういうこと?

あなたが実行したmailq は Sendmail のものです。Postfixのインストールがどこかうまくいってません。Postfixは代替となるmailq コマンドをインストールします。Postfixのインストールを見直す必要があります。これはSendmailのmailq がPostfixのmailq よりもパスの前の方にある (この場合、Sendmailのものを例えばmailq.sendmailのように名前を変えてください) か、Postfixのインストールが完全に了していないというような、簡単な問題でしょう。

[Back][Top][Feedback]


40.メッセージが期限切れでバウンスされずにとどまっている時間って変えられないの?

maximal_queue_lifetime パラメータが、配送できないと見なす前にメッセージがキューにとどまるべき時間を決めます。デフォルトは5日 (5d) です。

[Back][Top][Feedback]


41.ある時間経ったら個々のメッセージを期限切れでキューから消すようにする方法ってないですか? それか、異なる配送先に対してキューの寿命を別々に持たせる方法は?

キューファイルを明示的に期限切れにするようなオプションはありません。キューマネージャはメッセージの期限切れを、どれだけの間キューにいたかとmaximal_queue_lifetime の値(前の質問を参照) で判断します。キューにたまったメッセージには複数の受信者がいて単一の配送先じゃないかもしれないので、配送先ごとに別々のキュータイムを持たせることもできません。

また、Postfix の最近のバージョンではbounce_queue_lifetime パラメータができたので、配送できない不達通知がキューにとどまる時間を短くできます。

[Back][Top][Feedback]


42.以前設定に問題がありました。今は直っていますが、システムは古い、間違った設定を使ったままでキューのメールを配送しようとしてしまいます。新しい設定を使わせるには何をしなきゃいけないのでしょう?

postsuper -r コマンドで、もう一度メッセージをキューに入れてやる必要があります。

[Back][Top][Feedback]


43.キューにたまっている大量のメールが、実際のemailアドレスではなく"MAILER-DAEMON"が作ったように見えるんだけど、これはどこから来たの?

これらは、前に配送できなかったメールの元の送信者に配送できないという、あなたのサーバから来たバウンスメッセージです。あなたのサーバが存在しないユーザ宛のメッセージを受け取る場合に非常によく起こります。関連する質問 を読んでください。

すでに存在しないユーザ宛のメッセージを拒否しているのであれば、あなたのユーザの誰かがウィルスに感染しているために起こっているのかもしれません。元のメッセージがどこから来たのか確認するためにログをチェックしてください。

[Back][Top][Feedback]


ロギング

44.Postfixはどこに情報をログとして記録するのですか?

Postfixはログのメッセージをシステムのsyslogdデーモンに記録します。実際のログファイルの場所を見つけるには、システムのドキュメントをチェックしてみてください。

[Back][Top][Feedback]


45.To や From アドレスのような他の情報と一緒にメッセージのサブジェクトをPostfixにログとして記録させることはできますか?

header_checks ファイルに、Subject:ヘッダに常にマッチしてその結果が 'WARN' となるようなエントリを加えると、サブジェクトをログに記録できます。

/^subject:/      WARN

[Back][Top][Feedback]


46.メールに何が起こっているのかを正確に知るための、デバッグオプションや冗長ログを記録するオプションのようなものってある?

master.cf の特定のコンポーネントに、1つ、またはそれ以上-v オプションを加えて、ログを増やしてやることができます。

smtp      inet  n     -    n    -     -     smtpd -v

特定のサイトのトランザクションに関しての追加情報も、main.cfdebug_peer_list パラメータにサイト名を加えると得られます。そして必要な情報を全部得るには、debug_peer_level を調節してください。

debug_peer_list = example.comdebug_peer_level = 2

[Back][Top][Feedback]


47.Fromアドレスに関するエントリが、私のログには見あたりません。どうなっているのでしょう?

Fromアドレスはキューマネージャがログに記録します。qmgr をchrootして動かしているんだったら、syslogソケットを/var/spool/postfix に持たなきゃいけません。起動時にソケットを追加できるsyslogd デーモンがあるプラットホームもあります。それ以外の環境だと、chrootの中で動くようにするのはちょっとトリッキーです。システムのsyslogドキュメントを見てください。

[Back][Top][Feedback]


48.Postfixのログエントリを解析するのに便利なプログラムってない?

PostfixのホームページにあるLogfile analysisを参照。

[Back][Top][Feedback]


49.私が使っているウィルススキャンの方法では、すべてのメッセージがPostfixに再投入されますが、それだとすべて2回ログに記録されてしまいます。Postfixがある事柄だけログに記録しないような設定ってある?

本当にPostfixのログを制限したいわけじゃないよね? Postfixはいつか必要になるかもしれない全ての情報をログに記録するんです。その代わり、Unixには探している情報だけを取り出すための操作やフィルタリングなんかをおこなうツールがたくさんあります。例えば、もし2回目のメッセージ投入がrelay=vscan を含んでいるなら、ログ解析の時にフィルタリングで外してしまいましょう。

$grep -v "relay=vscan" maillog > analyze_log

[Back][Top][Feedback]


50.システム時計は正確なのに、メールログエントリは違う時刻になってしまいます。何が問題なの?

chrootで動かしてますね。TIMEZONEを決めるのにシステムが使うファイルがchrootにあることを確認してください。

[Back][Top][Feedback]


DNS問題

51.ホストが見つからないっていうエラーを受け取ったんだけど、検索してみたら答が返ってきました。なぜPostfixは見つけられないの?

Postfix(のような全てのMTA)はメールをメール交換機(MX)に配送します。ドメインを探してDNSをチェックしているときに、MXレコードを検索していることを確かめてください。

[Back][Top][Feedback]


52.私の場合、host -t MX example.com をやってみました。私は答を得られたのに、Postfixは"Host not found, try again" と文句を言うんです。

Postfixがchrootの中で動いているんでしょう。必要なファイルが全てchrootに揃っているか、確かめてください。特にresolv.conf がなかったり間違ってることがよくあります。必要なファイルを全てpostfix アカウントが読めるように、パーミションのチェックも忘れずに。

[Back][Top][Feedback]


53.PostfixがMXレコードを無視してAレコードのシステムに直接配送しようとしているみたい。これって普通なの?

main.cf disable_dns_lookups = yes にしているなら、それが正常です。また、ブラケットで指定されたtransportマップを使っているなら、その場合Postfixはブラケット内のシステムに直接配送してしまいます。

example.com     smtp:[mail.example.com]

[Back][Top][Feedback]


バーチャルドメイン

54.バーチャルエイリアスでプログラムにメッセージを配送する方法ってある?

直接はできません。pipe配送やシステムのローカルアドレスに配送するように、virtual エイリアスを使ってアドレスを書き換える必要があります。

[Back][Top][Feedback]


55.postmaster というアドレスのようなグローバルなバーチャルエイリアスをつくって、私の全てのドメインのpostmaster を同じアドレスに届けることってできる?

一言で言うと、できません。新しいドメインを追加するプロセスやスクリプトに必要なエイリアスを作るステップを入れることをおすすめできるだけです。

[Back][Top][Feedback]


UBEブロック

56.助けて! オープンリレーになってるみたい。ログにこんなメッセージがたくさん書かれてるのが見つかった:

May 20 06:38:46 scallop postfix/smtp[21383]: connect to mail.example.com[10.11.12.13]: Connection refused (port 25)May 20 06:38:46 scallop postfix/smtp[21383]: 79AA4234A9: to=<jenny796@example.com>, relay=none, delay=55262, status=deferred (connect to mail.example.com[10.11.12.13]:Connection refused)

example.comなんて全然知らないんだけど。どうすればいいの?

落ち着いて。これはたぶん、あなたのシステムで配送できない偽装メッセージに対して、Postfixが送ろうとしているバウンス通知です。このログの前に、配送できないjenny796@example.com からのメッセージのエントリがログの前の方にあるはずです。たぶんオープンリレーではないのですが、存在しないユーザ宛のメッセージを受け取らないようにシステムを設定する方がよいでしょう。local_recipient_maps に関する情報を参照してください。

[Back][Top][Feedback]


57.助けて! オープンリレーになったかもしれない。どうやってチェックすればいいの?

ネットワークの外にシステムにアクセスできるのであれば、それを使ってあなたのシステムを通して外部のアドレスに送るようなメッセージを送ってみてください。外部のシステムから、emailクライアントがあなたのシステムをSMTPサーバとして使うように設定します。それからあなたのシステムで宛先として扱わないアドレス宛にメールを送ってみます。これが配送されれば、オープンリレーで動かしてしまっています。

[Back][Top][Feedback]


58.助けて! 間違いなくオープンリレーになってしまった。いろんなブラックリストに載っちゃったよ。Postfixの設定はあってるはずなのに。なぜ私のシステムは中継してしまったの?

ファイアウォールのようなゲートウェイマシンやルータ、その他のメールシステムがインターネットとあなたのPostfixの間にある場合、その組み合わせでメールが自由に中継されるようになってしまっているかも。ゲートウェイシステムのIPアドレスがmynetworks パラメータに入っていて、Postfixシステムへの全てのメールを通すように設定してあると、全て中継することを認めてしまうことになるのです。ゲートウェイシステムをmynetworks から削れば直るでしょう。

[Back][Top][Feedback]


59.エンベロープ送信者アドレスに何もないspamをたくさん受け取ったんだけど、これってブロックできない?

リターンパスが空ということだけでメッセージをブロックしてはダメです。空のエンベロープアドレスを受け取ることは規格で要請されます。このテクニックはエラー通知がループするのを防ぐために使われます。なので、それ以外の手段でspamを区別する必要があります。

[Back][Top][Feedback]


60.ある送信者アドレスをブロックするように制限しました。なぜ制限された送信者からのメッセージは、クライアントがMAILFROM コマンドを発行してすぐにブロックされないの?

デフォルトでは、PostfixはRCPT TO コマンドを受け取るまではクライアントを拒否しません。そうしないと、拒否されたことを認識しないSMTPクライアントがあって、メッセージを送り続けようとしてしまい、本来より長く接続が続いてログが警告メッセージであふれてしまうことになるからです。デフォルトのもう一つの利点として、メッセージを拒否する前に、接続してきたクライアントの情報を完全にできるのです。デフォルトの動作はsmtpd_delay_reject = no とすることで変えられます。

[Back][Top][Feedback]


61.header_checksbody_checks のどのエントリがメッセージを拒否したのか、知る方法ってないの?

そんなことないです。多くの人がユニークな目印をRHSにつけて、ルールを識別します。簡単にナンバリングするのもよいでしょう。例えば、

/freehotsex/    REJECT Message content rejected [182]

とすると、このルールがメッセージを拒否するのに使われたときに、ログに "Message content rejected [182]" と書かれます。

[Back][Top][Feedback]


62.応答しないサーバから存在しないユーザ宛のメールがたくさん来てしまい、存在しないサーバにバウンス通知を配送しようとして、キューが常にいっぱいになっちゃいます。これを防ぐ方法ってない?

存在しないユーザ宛のメールは受け取っちゃダメです。From アドレスはたいていニセモノなので、実際には送っていない人にメッセージをバウンスしてしまいます。そういったメールはキューに受け取らず、拒否 するように Postfix を設定しなければいけません。状況に応じてlocal_recipient_mapsrelay_recipient_maps の適切な方を設定してください。reject_unknown_sender_domain 制限を smtpd 制限の中に含めるようにする必要もあるかも。詳細はLOCAL_RECIPIENT_READMEを見てね。

[Back][Top][Feedback]


63.本体やヘッダのチェックを設定に加えて、あるサブジェクト行や添付ファイルをブロックするような正規表現を持つファイルを配置したけど、テストしてみたらブロックされるべきサブジェクトや添付ファイルを持つメッセージを送ることができてしまいました。私は何か間違ったことをしたのでしょうか?

Postfixを再起動しました? それと、正規表現が期待した動作をするか確かめるために、postmap で正規表現をテストしてみる方がよいかも。

多くのemailクライアントで普通に表示されるものでも、エンコードされたメッセージ (base64等) はブロックできないことに気を付けて。メッセージが元々エンコードされてきたかどうかを知るには、Content-Transfer-Encoding: ヘッダを探してください。

[Back][Top][Feedback]


64.たくさんのウィルスを止めるために、本体行チェックをいくつか設定に加えました。だいたいはうまくいくけど、時々使われてないようにみえるのはなぜ?

すり抜けたメッセージはたぶんbase64か何かでエンコードされてます。前の質問を参照。

[Back][Top][Feedback]


65.header_checksbody_checks を使って条件比較はできますか?例えばこんな感じで:

/^to: joey/ AND /^subject: hot deals/      REJECT

あるユーザ宛だけののあるサブジェクトをブロックするように。

Postfix のヘッダ・本体チェックは同時に1行の論理メッセージしか考慮できないので、これはうまくいきません。簡単なチェックにしか使えないのです。もっとしっかりしたものが欲しければ、必要な賢さを持つコンテンツフィルタをセットアップするのがよいでしょう。

[Back][Top][Feedback]


66.header_checksbody_checks を使ってspamをブロックしているのですが、正当なemailまで私のチェックでブロックされてしまうことがあります。ヘッダや本体をチェックしないようにするために、あるメールをホワイトリストに載せるような方法はありますか?

ありません。ヘッダや本体のチェックは全てのメッセージにかけられるので、全てのメッセージに簡単に適用できるチェックにとどめるべきです。もっとしっかりしたものが欲しければ、必要な賢さを持つコンテンツフィルタをセットアップするのがよいでしょう。自分の所有するユーザ宛のコンテンツフィルタを無効にしたいだけなら、"TurningOff Body and Header Checks for Internal Users" を見てください。

自分専用のコンテンツフィルタを作りたいならそうすることもできるけど、SpamAssassin や Bogofilter なんていうスパムブロック用のツールもすでにたくさんあります。こういったツールはたいていホワイトリストルールを指定することもできます。Postfix Add-on Softwareページの "Virus/SPAM content filters" を見てください。

こちらも参照:

[Back][Top][Feedback]


67.わかった。でもログからブロックされた文字列を含んだレポートを受け取れるようにしたいだけなんだけど。これを受け取れるようにできないの?

チェックをすり抜けるように、レポートを(base64なんかで)エンコードしたり、圧縮して添付として送ればいいんじゃない?

[Back][Top][Feedback]


68.spamをブロックするためにブラックリストの一つを使ってて、それはうまくいってます。でもうちの顧客/パートナーでリストアップされてしまっているのがあって、うちのサーバは律儀にそこからのメッセージを拒否してしまうのです。ブラックリストを使ったままで、彼らのメッセージだけを許可する方法ってある?

あるアドレスやドメインからのメッセージを受け取るようにするホワイトリストを作ればよいかと。例:

## main.cf#smtpd_recipient_restrictions =    permit_mynetworks    reject_unauth_destination    ...check_sender_access hash:/etc/postfix/whitelistreject_rbl_client dnsbl.njabl.org    ...

## whitelist#@customer_domain.comOK

ホワイトリストがreject_rbl_client の前にチェックされることを確認してください。Eメールアドレスは簡単に詐称されることを忘れないで。ホワイトリストに設定を加えるときは、毎回サーバをオープンリレーにしてしまわないように細心の注意を払ってください。ホワイトリストがreject_unauth_destination (やその他の拒否制限) の後になっていることを確認してください。

[Back][Top][Feedback]


69.header_checks や body_checks で作った正規表現って、どうやってテストすればいいの?

postmap コマンドを使ってやります。メッセージの1行を表す文字列を指定します:

$ postmap -q "Content-Type:..." regexp:/etc/header_checks

または、メッセージのコンテンツを持つファイルをリダイレクトしてやると、メッセージ全体をテストします:

$ postmap -q - regexp:/etc/body_checks < msg_file

postmap を使うのと実際にPostfixがメッセージをチェックするときで、気を付けないといけない違いが2つあります。postmapコマンドは複数行にまたがったヘッダ行を理解しないのと、postmap はヘッダと本体の区別をしないという点です。また、/.../i を使っている正規表現で大文字・小文字を区別したマッチングをテストする場合、postmap には-fオプションが必要です。

[Back][Top][Feedback]


70.もし、accessマップであるドメインを

example.com     REJECT No spam accepted

のようにブロックしたとすると、host.example.com みたいなサブドメインも一緒にブロックされることになるの?

parent_domain_matches_subdomains の設定によります。これが "smtpd_access_maps" を含んでいると、答は yes で、サブドメインはブロックされます。そうしたくなければ、parent_domain_matches_subdomains に "smtpd_access_maps" を入れないように設定します。

parent_domain_matches_subdomains =      debug_peer_list,fast_flush_domains,mynetworks,      permit_mx_backup_networks,qmqpd_authorized_clients,      relay_domains

そうした場合でも、ピリオドで始まるエントリを加えてやれば、特定のドメインのサブドメインをブロックできます。

example.com      REJECT No spam accepted.example.com     REJECT No spam accepted

こうすると、parent_domain_matches_subdomains から"smtpd_access_maps" を外しても同じことができます。

[Back][Top][Feedback]


71.strict_7bit_headers = yes を設定している人はたいてい成功しているの?

このパラメータはかなり厳密になる傾向があって、たくさんのメールを拒否してしまいます。ヘッダにゴミのような文字がたくさんあるメッセージをブロックしたいだけなら、次の正規表現チェックをheader_checks マップで試してみてください:

/[^[:print:]]{7}/  REJECT Your mailer is not RFC 2047 compliant

これはヘッダに少なくとも表示できない文字が7文字あるメッセージをブロックします。

[Back][Top][Feedback]


72.DNSでMXホストを2つ設定してます。1つ目のMXシステムでは完璧なスパムチェックを設定してるんだけど、プライマリサーバが使えるのに、バックアップMXに直接たくさんのスパムが配送されちゃいます。プライマリサーバが動いているときにはそっちに強制的にメールを送らせる方法ってない?

スパマーに配送先を強制する方法なんてありません。セカンダリMXシステムを動かしてるのなら、完全に同じUBEチェックを設定しているか確かめないと、それがメールを通しちゃいます。それを何らかの理由で同じ設定ができないのなら、使うのをやめるしかないです。多くのサイトで、まさにそんな理由で単一のメール交換機が動いてます。正規のメールだったらたいてい何日かは送り直そうとするので、メールサーバがかなり長い時間ダウンしている時にしかメールを失いません。

[Back][Top][Feedback]


アンチウィルス

73.ある添付ファイルを、ファイル名の拡張子に基づいてブロックすることってできるの?

はい、header_checks を使って簡単なウィルスブロックができます。実行ファイルやその他の危険な拡張子を持つ添付ファイルがついたメッセージを拒否するようなチェックを設定します。こんなのからはじめたらどうでしょう (正規表現バージョン):

/^content-(type|disposition):.*name*=.*\.(exe|pif)/    REJECT We cannot accept executable attachments

そして pcre では:

/^content-(type|disposition):.*name\s*=.*\.(exe|pif)/    REJECT We cannot accept executable attachments

"exe" や "pif" の他に、あなたのユーザの環境で危険な拡張子の分 (ヒント: Windows にはたくさんあります)だけ追加すればよいでしょう。本当のウィルススキャンパッケージを使えばさらに幸せになれます。

[Back][Top][Feedback]



[8]ページ先頭

©2009-2025 Movatter.jp