UNIXな生活
更新:2003/11/24  
Linuxな生活  FreeBSDな生活
 Solarisな生活
 JAVAな生活
 Practical use
 掲示版
Postfixのインストールと設定(基礎編)

MailサーバのPostfixをインストールします。
*なお、今回は、mail1.hogehoge.***.com=192.168.100.3にインストールするとします。

ユーザーとグループを作成します。
#groupadd postdrop
#useradd -d /dev/null -s /bin/false postfix


ソースの取得とインストール
FreeBSDでは、portからインストールするのがお薦め、パッチも適応してくれなす。
http://www.postfix.orgか ら、postfix-2.0.16.tar.gzを入手しま す。
#tar zxvf postfix-2.0.16.tar.gz -C /usr/local/src
#cd /usr/local/src/postfix-2.0.16
#make
*つぎにmake installです。このとき、どこにインストールするか聞いて来ますので、適時設定します。
#make install
*質問事項
install_root
   既定値=/
   推奨=既定値
   インストールのベースディレクトリを指定。
tempdir
   既定値=カレントディレクトリ
   推奨=既定値
   インストールする時のテンポラリディレクトリ。
config_directory
   既定値=/etc/postfix
   推奨=既定値
   設定ファイルの保存場所。
daemon_directory
   既定値=/usr/libexec/postfix
   推奨=/usr/local/libexec/postfix
   Postfixのdaemonをインストールするディレクトリ。
command_directory
   既定値=/usr/sbin
   推奨=/usr/local/sbin
   Postfixのコマンドインストールディレクトリ。
queue_directory
   既定値=/var/spool/postfix
   推奨値=既定値
   メールキューを保存するディレクトリ。
sendmail_path
   既定値=/usr/sbin/sendmail
   推奨値=/usr/local/srbin/sendmail
   sendmial互換コマンドのインストールディレクトリ。
newaliases_path
   既定値=/usr/sbin/newaliases
   推奨値=/usr/local/sbin/newaliases
   sendmail互換のnewaliasesプログラムのパス。
mailq_path
   既定値=/usr/bin/mailq
   推奨値=/usr/local/bin/mailq
   sendmail互換のmailqプログラムのパス。
mail_owner
   既定値=postfix
   推奨値=postfix
   Postfixが使うキューの所有者。
setgid_group
   既定値=postdrop
   推奨値=postdrop
   メールの投稿とキューの管理をするグループ。
manpage_directory
   既定値=/usr/local/man
   推奨値=既定値
   manのインストールディレクトリ。
sample_directory
   既定値=/etc/postfix
   推奨値=既定値
   設定サンプルファイルのインストールディレクトリ。
readme_directory
   既定値=なし
   推奨値=指定無し
   READMEをインストールするディレクトリ。

適時質問に答えると、インストールは終了です。



Postfixの基本設定と起動。


Postfixの設定ファイルは、以下の2つで行ないます。
/etc/postfix/master.cf=デーモンの設定
/etc/postfix/main.cf=メール配送の設定
インストール後は、雛型のファイルが作成されているので、これを変更していきます。

まずは確認。
ホスト名とDNSの確認をします。
ローカルホストの確認。
%hostname
mail1.hogehoge.***.com

/etc/hostsの確認
%cat /etc/hosts
127.0.0.1      mail1 mail1.localdomain    localhost
192.168.100.3  mail1 mail1.hogehoge.***.com

DNSには、ドメインの正引き用設定ファイルに、以下があるか確認。詳しく、BIND9の導入を参考に。
mail1 IN  A     192.168.100.3
*できれば、digコマンドで確認してください。

設定の確認
/etc/postfix/master.cfで、Postfixがchroot環境に設定されているか確認してください。
今回はchroot環境は使用しませんので、master.cfファイルの、chroot列の値をすべて'no'に変更してください。

/etc/postfix/main.cf
mynetworks = 192.168.100.0/24, 127.0.0.1
*メールの不正中継防止のため、取り敢えず外部からPostfixを使用して外部へメールを送ることを規制します。


起動
#/usr/local/sbin/postfix start

起動の確認
#ps -aux|grep post
root      5420  0.0  0.1  2692  888 ?        S    22:24   0:00 /usr/local/libexec/postfix/master
postfix   5421  0.0  0.1  2680  856 ?        S    22:24   0:00 pickup -l -t fifo -u
postfix   5422  0.0  0.1  2724  932 ?        S    22:24   0:00 qmgr -l -t fifo -u

ログは、/var/log/maillogに出力されます。



配送テスト

ローカル配送テスト
Postfixの起動に成功したら、ローカルで配送テストをします。
テストには、/bin/mailを使用し、ユーザー:mailUserへ配送します。
%/bin/mail -s "testMail" mailUser@mail1.hogehoge.***.com
First Test Mail     *本分を入力。入力修了後[Ctrl]+d
CC:                 *CCを聞いて来るが、そのままEnter
これでメールのテスト配信が終ります。

受信確認
ユーザー:mailUserで、
/bin/mail
No mail for mailUser  と出力されたら失敗です。
通常は
"/var/spool/mail/mailUser: 1 message 1 new
>N  1 root@mail1.mail  Sat Sep 27 23:35  18/746   "testMail"
と出力されます。
1を押すとメールが表示されます。
受信メールを削除する場合は、'd'
/bin/mailの終了は、'q'です。


外部へのメール配送。
Postfixでは、外部にメール配送する場合DNSを参照します。
手軽に、同一ドメイン内のPCでテストすることにします。
DNSに同一ドメイン内のPC=pchoge1と配送テストをします。
DNSにpchoge1のAレコードがドメインの正引き、逆引き用設定ファイルに在ることを確認してください。

hogepc1からmail1への配送テスト
[mailUser@hogepc1]mail -s "test from hogepc1" mailUser@mail1.hogehoge.***.com
*mail1のmailUserユーザーで、メール受信の確認をしてください。

mail1からhogepc1への配送テスト
[mail1@hogepc1]mail -s "test from mail1" mailUser@hogepc1.hogehoge.***.com
*hogepc1のmailUserユーザーで、メール受信の確認をしてください。



ドメイン宛てのメール配送
いままでは、メールを送るのに'ホスト名.ドメイン名'を使用していましたが、今度はドメイン指定でメールを送受信出来るようにします。
そのためには、DNSとPostfixのmain.cfの設定を変更します。

DNSは、ドメインの正引き用設定ファイルに、以下があるか確認。詳しく、BIND9の導入を参考に。
IN    MX  10    mail1.hogehoge.***.com
mail1 IN  A     192.168.100.3
確認は、
#host -t mx hogehoge.***.com
hogehoge.***.com mail is handled by 10 mail1.hoeghoge.***.com.

/etc/postfix/main.cfの 変更。
myorigin行とmydestination行を変更します。
すでに設定する行は用意されていますので、以下のようになるように、#(コメント)を変更してください。

#myorigin = $myhostname
myorigin = $mydomain

#mydestination = $myhostname, localhost.$mydomain
mydestination = $myhostname, localhost.$mydomain $mydomain

変更したら、設定ファイルをリロードします。
#/usr/local/sbin/postfix reload

これで、外部からの'mailUser@hogehoge.***.com宛てのメールが受信できます。
ただし送信は、/bin/mailではmailUser@mail1.hogehoge.***.comをヘッダーに付加します。
これは、メールクライアントを使用すれば解決します。

これで、PostfixのインストールはほぼOKですが、この設定では、内部から外部への配送と外部から内部への配送は可能ですが、外部から Postfixを利用して外部へ配送出来ません。
main.cfのmynetworksをコメントアウトすれば出来ますが、SPAMの不正中継に利用されるおそれが在りますので、実際使用するとなると、 SMTP AUTH(不正中継防止)を組みこむ必要があるでしょう。
そして、メールサービス用のサーバとして考えると、POPやIMAPの利用も必要になって来ます。

tips.1 送信専用メールサーバの構築。
送信専用にする場合は、TCP/25番ポートをオープンする必要は在りません。
で、どうするか、
まず、/etc/postfix/main.cfを以下のよ うに編集してください
myorigin = $mydomain
relayhost = $mydomain
local_transport = error:local delivery is disabled

つぎに/etc/postfix/master.cfで、 smtpdとlocalをコメントアウトします。
#smtp     inet  n       -       n       -       -       smtpd
#local    unix  -       n       n       -       -       local

この設定でPostfixを起動して、tcp/25に接続してもデーモンは起動しません。
外部への送信専用として使うには、この設定で使用できます。


tips.2 telnetによる、メールサーバの応答テスト。
mailサーバは、telnetで確認するとわかりやすい。で、使いかたです。
% telnet localhost 25
Trying 127.0.0.1...
Connected to rx7 (127.0.0.1).
Escape character is '^]'.
220 mail1.hogehoge.***.com ESMTP Postfix
helo hogehoge.***.com
250 mail1.hogehoge.***.com
mail from: mailUser@hogehoge.***.com
250 Ok
rcpt to: myUser@hoge.***.jp
250 Ok
data
354 End data with <CR><LF>.<CR><LF>
Subject: TEST

Test Mail

250 Ok: queued as D47GB7A2172
quit
220 Bye


非常に駆け足で設定、配送テストを説明してきました。
Postfixは、最近Linuxディストリビューションにも標準で搭載されるなど、Sendmailの代替として期待できます。
設定はかなり柔軟にできます。詳しくはPostfixの書籍などを探してみてください。
もう少し突っ込んだ書籍が出てくれるとうれしいのですが、、、。



Producted by Tomoya Sakurai