原文(英語)はこちら
この文書は「小規模な事業所」でPostfixを利用するときのヒントや秘訣を探しやすいように1つの文書にまとめたものです。ここではメールを送信する側についてのみ記しています。もしあなたのマシンがメールを直接受信しない場合(つまり、独自のインターネットドメイン名と固定IPアドレスを持っていない場合)、「fetchmail」のような手段も必要になりますが、それについてはこのPostfix解説文書の範囲外です。
この件についてより詳しくは SASL_README と STANDARD_CONFIGURATION_README の文書を参照してください。
インターネットに直接接続できるスタンドアロンマシンであれば、Postfix はそのままで問題なく動作するはずです。少なくとも、http://www.postfix.org/ から Postfix のソースコードをダウンロードした場合は、そのようにインストールされます。
「postconf -n」のコマンドを実行すると、どの設定がmain.cfによって上書きされているのかを確認することができます。スタンドアロンでは、いくつかのパス名設定のほかに、BASIC_CONFIGURATION_README文書で説明している内容以外のパラメータはほとんど設定する必要がありません。
/etc/postfix/main.cf: # 設定は任意: メールを user@hostname ではなく user@domainname のアドレスで送信する myorigin = $mydomain # 設定は任意: NAT/プロキシの外部アドレスを指定する proxy_interfaces = 1.2.3.4 # 選択肢1: 他のホストからのメールを中継しない mynetworks_style = host relay_domains = # 選択肢2: ローカルクライアントからのメールのみ中継する mynetworks = 192.168.1.0/28 relay_domains =
もしあなたの設定に該当するのであれば、「インターネット上に実在するホスト名がないホスト上で動作するPostifxの場合」の節も参照してください。
この節は、独自のインターネットホスト名を持たないホストのためのものです。一般的には、DHCP やダイアルアップで動的な IP アドレスを取得しているシステムがこれに該当します。Postfix がうまくメールを送受信することができるのは、仮の名前を持つマシン内のアカウント相互間のみです。しかし、インターネットにメールを送るとき、電子メールアドレスに仮のホスト名を使うことはできません。それは、誰もあなたのメールに返信することができないからです。実際、存在しないドメイン名のメールアドレスを拒否するサイトが増えています。
注意:以下の情報はPostfixのバージョンに依存します。Postfixのバージョンを確認するには「postconf mail version」のコマンドを実行してください。
Postfix 2.2は generic(5)アドレスマッピングを使って、ローカルの仮電子メールアドレスをインターネットで有効なアドレスに置き換えます。この置き換えはメールがマシンを離れるときにだけ行なわれ、同一マシン上のユーザ間でメールを送信するときには行なわれません。
以下に追加設定の例を示します。なお、実際にはこの文書の前半で説明した基本的な設定を組み合わせる必要があります。
1: /etc/postfix/main.cf: 2: smtp_generic_maps = hash:/etc/postfix/generic 3: 4: /etc/postfix/generic: 5: his@localdomain.local hisaccount@hisisp.example 6: her@localdomain.local heraccount@herisp.example 7: @localdomain.local hisaccount+local@hisisp.example
SMTPを使ってリモートホストにメールを送るとき
システムにおいてdbファイルではなくdbmファイルを使っている場合は、hashの代わりにdbmを指定してください。
genericテーブルを更新したときはいつも「postmap /etc/postfix/generic」を実行を実行するようにしてください。
ここでは、Postfix SMTPクライアントが、SASL認証を必要とするメールゲートウェイサーバーを経由してすべてのメッセージを送信する典型的なシナリオを示します。
トラブル解決のコツ
例をより読みやすくするために、2つの部分に分けて紹介します。最初の部分では基本的な設定を行い、2番目の部分ではユーザー名とパスワードの情報を指定します。
/etc/postfix/main.cf: smtp_sasl_auth_enable = yes smtp_tls_security_level = encrypt smtp_sasl_tls_security_options = noanonymous relayhost = [mail.isp.example] # 別の書き方 # relayhost = [mail.isp.example]:submission smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
/etc/postfix/sasl_passwd: # 宛先 認証情報 [mail.isp.example] username:password # 別の書き方 # [mail.isp.example]:submission username:password
重要
SASLクライアントパスワードファイルを/etc/postfixに保存し、ユーザ名とパスワードの組み合わせを他のユーザから保護するために、ファイルをrootのみ読み書きできるようにします。Postfix SMTPクライアントは、それでもSASLクライアントパスワードを読み取ることができます。それは、特権がなくされる前、オプションのchroot jailに入る前に、rootユーザーとしてファイルを開くからです。
Postfix バージョン2.3以降では、送信者アドレスごとに異なるISPアカウントを使うことができます。これは、ある人が仕事とプライベートで同じマシンを使っている場合や、異なるISPアカウントを持つ人が同じPostfixサーバーを共有している場合などに便利です。
これを可能にするために、Postfixは送信者ごとのSASLパスワードと送信者ごとのリレーホストを指定できるようになっています。下記事例の場合、Postfix SMTP クライアントは、SASL パスワードファイルで送信先アドレスを検索する前に、同じファイルで送信者アドレスで検索します。同様に、Postfix trivial-rewrite(8)デーモンは送信者ごとのrelayhostファイルを検索し、最終手段としてのみデフォルトのrelayhostの設定を使います。
/etc/postfix/main.cf: smtp_sender_dependent_authentication = yes sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd relayhost = [mail.isp.example] /etc/postfix/sasl_passwd: # 送信者別の認証:/etc/postfix/sender_relay も参照してください。 user1@example.com username1:password1 user2@example.net username2:password2 # デフォルトrelayhostのログイン情報 [mail.isp.example] username:password # 別の書き方 # [mail.isp.example]:submission username:password /etc/postfix/sender_relay: # 送信者別の認証:/etc/postfix/sasl_passwd も参照してください。 user1@example.com [mail.example.com]:submission user2@example.net [mail.example.net]