送信専用に Postfix を導入する
SERVER
序論
Sendmail 互換のメールサーバ Postfix。
今回は、クライアントから sendmail コマンドを使用してメールを出せるようなシステムを Postfix によって行ってみました。たとえば、Web Server の CGI から sendmail コマンドを使って自動的にメールを出せるようにしたい、そういった状況を想定しています。インストールする OS は、Linux Slackware 7.1 です。
Postfix のインストール
Postfix は、http://www.postfix.org/ にていろいろな情報が提供されています。今回はそのページから、postfix-19991231-pl13.tar.gz をダウンロードしてインストールすることにします。
ソースファイルを /usr/src にダウンロードしたら、以下のようにして展開します。
tar xvzf postfix-19991231-pl13.tar.gz
すると、postfix-19991231-pl13/ というディレクトリが出来上がりますので、cd postfix-19991231-pl13 と入力してその中へ入ります。続いてコンパイル作業に入ります。
make
これでコンパイルが完了します。
マニュアルに書いてありましたが、もしも make: don't know how to ... というようなメッセージが現れてしまうような場合には、一度 make -f Makefile.init makefiles というコマンドを実行する必要があるそうです。今回はそういったメッセージが現れなかったため試していませんけど・・・。
つづいて postfix という名のユーザアカウントを作成します。
groupadd postfix
useradd -g postfix -d /dev/null -s /bin/false postfix
postfix というユーザアカウントには、ホームディレクトリや Shell は必要ないとのことなので、上のような設定にしてみました。とにかく、ユーザ ID とグループ ID が一意であればいいそうです。
続いてインストールです。以下のようなコマンドを打って、セットアップを行います。
sh INSTALL.sh
このコマンドを打ち込むと、次のような入力を求められます。ほとんどすべてディフォルトのままで問題ないので、よくわからない場合は何も入力しないで Enter を押して進めましょう。
install_root
インストールするディレクトリのいちばん最初を指定します(プレフィックス)。ここを基点として各種ソフトウェアがインストールされます。ディフォルトは / 、つまりルートディレクトリで、普通はこれで問題はないと思います。
tempdir
インストール時に使用する作業用ディレクトリです。ディフォルトは INSTALL.sh を動かした場所になるようです。特に変更する必要はないと思われますが、今回は /tmp/postfix を設定してみました。
config_directory
Postfix の設定ファイルを格納するディレクトリを指定します。ディフォルトは /etc/postfix です。他のディレクトリに設定ファイルを格納したいような場合には、ここに適切なパスを指定しましょう。
daemon_directory
Postfix のデーモンプロセスを担うプログラムを格納するディレクトリのようです。初期設定は /usr/libexec/postfix です。必要に応じて、適切なディレクトリに変更してください。
command_directory
Postfix の各種管理コマンドを格納するためのディレクトリだそうです。初期値は /usr/sbin が指定されています。適宜、必要に応じて設定を変更してください。
queue_directory
Postfix が使う、送信作業中などにメールを一時的に蓄える場所を指定します。ディフォルトでは /var/spool/postfix が設定されています。他の場所をメールキューで使用したい場合には、ここに指定します。
sendmail_path
Postfix が提供する sendmail プログラムが格納されるパスを指定します。ディフォルトでは /usr/sbin/sendmail が設定されています。この場合、/usr/sbin/sendmail を動かすことで、Postfix を使用したメール送信を行うことができるようになります。
newaliases_path
newaliases コマンドへのパスを指定するようです。ディフォルトでは /usr/bin/newaliases が設定されています。
mailq_path
mailq コマンドへのパスを指定するようです。ディフォルトでは /usr/bin/mailq が設定されています。
mail_owner
Postfix を動かすユーザアカウントを指定します。ディフォルトでは postfix というユーザ名が指定されています。今回はあらかじめ postfix というユーザアカウントを作成してあるので、これで大丈夫です。
setgid
どういう役割であるかは現在調査中です。ディフォルトでは no が設定されています。今回はディフォルトのままにしておきます。
manpages
man tree へのパスを指定します。パスを指定しない場合には no を指定すればいいそうです。ディフォルトでは /usr/local/man が設定されていますので、今回はこれをそのまま使用することにします。
以上で必要項目の入力は完了です。これで Postfix がインストールされました。
送信専用に設定を調整
今回は、Postfix をインストールした自分自身が、インターネットへ向けてメールを送信することが目的ですので、それを踏まえて設定を微調整してみることにします。
まず、/etc/postfix ディレクトリの中にある、main.cf を編集します。
main.cf の中に、# myhostname = host.domain.name というような記述があると思います。この1箇所を、先頭から # をはずして、host.domain.name のところを適切な名称に変更します。ここに指定するものは、自分自身をあらわすホストネーム、ドメイン名です。この設定がないと Postfix は動いてくれないようなので、何かしら設定してあげるようにしましょう。
続いて /etc/postfix/master.cf の編集です。
この中の一行、smtp inet n - n - - smtpd というような記述があると思います。この、smtp inet という項目の行は、今回のような状況下では必要ないので、先頭行に # をつけることによってコメントアウトしておきましょう。
Postfix 稼動
設定の微調整が終わったら、いよいよ Postfix を起動します。
コマンドラインから、postfix start と入力することで、Postfix システムが起動します。これで準備万全です。あとは /usr/sbin/sendmail などを使用して、インターネット側へメールを送信することができます。Postfix を起動しておかないと、sendmail コマンドを実行しても、メールが外界には送信されないので気をつけましょう。
再起動後も自動的に Postfix が機能するように、postfix start という記述を、/etc/rc.d/rc.local のような起動スクリプトに追加しておくと便利かもしれません。