Postfix
は Unix の
MTA (Mail Transfer Agent) として広く使われている sendmail との操作互換性を保ち
ながらより高いパフォーマンスとセキュリティを持った MTA です。sendmail より柔軟
性も高く設定が簡単です。
準備
Postfix をインストールする前に Postfix を実行するユーザとグループを作成しておく
必要があります。
# groupadd postfix
# groupadd postdrop
# useradd -g postfix -s /bin/false postfix
エイリアスファイルや仮想エイリアスファイルで使用する
Berkeley DB をあらかじめインストール
しておく必要があります。これがインストールされていないとエイリアスデータベース
で hash: や btree: が使用できません (dbm: で十分という場合には不要ですが)。
また LDAP や TSL を使用する場合にも必要なライブラリをあらかじめインストール
しておく必要があります。
ソースビルドとインストール
ビルド
Postfix の公式サイトから
Stable Release の最新版 (現在 2.5) をダウンロードして解凍します。
# gzip -d postfix-2.5.1.tar.gz
# tar xvf postfix-2.5.1.tar
# cd postfix-2.5.1
次にビルドを行います (tidy は clean と同意です)。
# make tidy
# make makefiles OPT="-O2" DEBUG=""\
CCARGS="-DHAS_DB -I/opt/sfw/include"\
AUXLIBS="-L/opt/sfw/lib -ldb"
# make
上記は Solaris 10 の Companion DVD から Berkeley DB を追加した場合の実行です。
実行環境に合わせて db.h, libdb.so の存在するディレクトリに書き
換えてください。
また LDAP や
TSL 対応の Postfix をビルドする場合にはそれらのディレクトリも追加してください。
ビルドが完了したら以下のコマンドを実行して Berkeley DB が利用可能で
あることを確認してください。btree, hash が Berkeley DB を使用する形式です。
# bin/postconf -m
btree
cidr
dbm
environ
hash
nis
nisplus
proxy
regexp
static
unix
「重大なエラー: libdb-x.x.so: open に失敗しました: ファイルもディレクトリも
ありません。」と出る場合はライブラリディレクトリが検索パスに登録されていません。
Solaris の場合は crle コマンドなどでライブラリパスに登録してください。
インストール
make install でインストールを開始しますがこの作業は
sendmil のモジュールや設定を上書きします。
途中でインストール先のディレクトリや
実行ユーザなどを問い合わせて来るので適当に入力してください (大抵はデフォルト
でかまわないですが)。
# make install
install_root: [/]
...
セットアップと起動/終了
例として以下の想定で設定を行います。
user@safran.moyo.biz
user@moyo.biz |
user が示すユーザのメールを受信 |
| postmaster@lab.moyo.biz |
受信したメールをユーザ foo のメールボックスに保存 |
/etc/postfix/main.cf
まず /etc/postfix/main.cf を編集してメールの受信方法を定義します。
main.cf
myhostname = safran.moyo.biz
mydomain = moyo.biz
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname,localhost.$mydomain,localhost,$mydomain,lab.moyo.biz
mynetworks = 192.168.101.0/24,127.0.0.0/8
alias_maps = hash:/etc/mail/aliases
virtual_alias_domain = lab.moyo.biz
virtual_alias_maps = hash:/etc/postfix/virtual
hash: と書かれているものは Berkeley DB を使用したデータベース形式のファイルで
あることを意味します。使用可能なデータベースタイプは postconf -m で表示するこ
とが出来ます。
各項目はそれぞれ以下のような意味を持ちます。
| myhostname |
このホストの名前。 |
| mydomain |
このホストのドメイン名。 |
| inet_interface |
メールを受信するネットワークインターフェース。 |
| mydestination |
このホストを終点とみなすホスト/ドメイン名。 |
| mynetworks |
このホストのネットワーク。この範囲からのメールはリレー可能。 |
| alias_maps |
エイリアスマップのデータベース。 |
| virtual_alias_domain |
仮想エイリアスマップを適用するドメイン名。 |
| virtual_alias_maps |
仮想エイリアスマップのデータベース。 |
mydestination にリストされていないアドレスのメールを受信した場合はリレーを
意図したものとして拒否されるので注意してください。lab.moyo.biz は仮想エイ
リアスを使用しますので virtual_alias_domain に指定します。
/etc/postfix/virtual
仮想ホストに宛てられたメールを実アドレスにマップするには /etc/postfix/virtual
を使用します。以下は postmaster@lab.moyo.biz 宛てメールのエイリアスを定義して
います。
virtual
postmaster@lab.moyo.biz foo@moyo.biz
postmap を実行すると virtual.db というファイルが作成されます。
# postmap hash:/etc/postfix/virtual
/etc/mail/aliases
エイリアスを実際のユーザに宛てたり、受信したメールをスクリプトなどに渡す場合は
/etc/mail/aliases で定義します (私の環境では存在しなかったため
/etc/postfix/aliases へシンボリックリンクを作成しました)。修正後は postalias
コマンドで aliases.db ファイルを作成してください。
# postalias hash:/etc/mail/aliases
newaliases コマンドでも良いような紹介も多いですが、sendmail の newalias
コマンドが使われてうまく行かない事もあります。Postfix が前提なら明示的に
postalias を使っておいてください。
起動と終了
セットアップが終了したら start コマンドを指定して Postfix を起動してください。
成功すれば SMTP ポートが LISTEN 状態になります。
# /usr/sbin/postfix start
postfix/postfix-script: starting the Postfix mail system
# netstat -a | grep smtp
*.smtp *.* 0 0 49152 0 LISTEN
#
Postfix はいくつかのコア機能が常駐しながら動作するため、正しく起動したように
見えても syslog に警告が出ることがあるためしばらく syslog を監視してください。
Postfix を停止するには stop コマンドを指定します。
# /usr/sbin/postfix stop
postfix/postfix-script: stopping the Postfix mail system
# netstat -a | grep smtp
#
後は Postfix を起動して内部・外部からのメールが意図した通りにやり取りされるか
を確認してください。もちろん DNS の A Record や MX Record の見直しも忘れない
ように。
一通り動作確認が終了したら
ABUSE テストサイト
で不正中継に使用されないことも確認してください。