2009年8月30日日曜日

postfix で mail server を立てる

[したいこと・しりたいこと]
postfixでメールサーバーを立てる

[環境]
Ubuntu Hardy 9.04
username:user01
USB 104Key (US)

[前提]
bind9のインストールと設定済み





[したこと]

(1) インストール
postfix

$ sudo apt-get install postfix

internet を選択

System mail name: example.localnet


(2) main.cf の編集

$ sudo vi /etc/postfix/main.cf @ local ver


# ".domain"情報のないアドレスに文字列 ".$myorigin" を付加しない。
append_dot_mydomain = no

# ホスト名の設定する。
myhostname = mail.example.localnet

# ドメインの無いアドレスに付加する値の設定 する。
myorigin = /etc/mailname

# ローカル配送するドメインを指定する。
mydestination = example.localnet, localhost, localhost.localdomain, localhost

# メール中継が可能な IP アドレスを制限する。
mynetworks = 192.168.0.0/24, 127.0.0.0/8

# メールボックスファイルの最大サイズ(単位は bye。 0 は無制限)を指定する。
mailbox_size_limit = 0

# 送信メールの最大サイズ(単位は byte。 0 は無制限)を指定する。
message_size_limit = 33554432 #10240000

# ヘッダをチェックするファイルの場所を指定する。
header_checks = regexp:/etc/postfix/header_checks

# この2つに「 no 」を指定すると何でもかんでも転送拒否する。
allow_percent_hack = yes
swap_bangpath = yes

# ソース・ルート形式で指定されている宛先メールアドレスを拒否する。
allow_untrusted_routing = no

#VRFYコマンドを使用不可にし、アドレス漏えいを防ぐ。
disable_vrfy_command = yes

#SMTP の ETRN コマンドの使用を制御する。
smtpd_etrn_restrictions = permit_mynetworks, reject_invalid_hostname

#Postfix サーバへの接続の許可/拒否を指定する。
smtpd_client_restrictions = permit_mynetworks, reject_unknown_client, permit

#接続相手にHELOを要求する。
smtpd_helo_required = yes

#HELOで間違った文法のホスト名がある接続を拒否する。
smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname, reject_unknown_client, permit

#RFC821 で定義されている書式に適合しないメールアドレスが通知された場合、受信を拒否する。
strict_rfc821_envelopes = yes

#MAIL FROMコマンドで通知されるアドレスのドメインが存在しない場合拒否する。
smtpd_sender_restrictions = reject_unknown_sender_domain, reject_sender_login_mismatch

#逆引き出来ない接続を拒否
smtpd_client_restrictions = permit_mynetworks , reject_unknown_client , permit

#RCPT TO コマンドで通知されるアドレスのドメインが存在しない場合拒否する。
smtpd_recipient_restrictions = permit_mynetworks, reject_sender_login_mismatch, check_relay_domains



(3)ヘッダーチェックファイルの作成

$ sudo vi /etc/postfix/header_checks

#メールヘッダに「192.168.*.*」又は「127.0.0.1」を含む行を削除する。
/^Received:.*192.168..*/ IGNORE
/^Received:.*127.0.0.1.*/ IGNORE


(4)postfix の main.cf ファイルの 文法チェック

$ sudo /etc/init.d/postfix check



(5) 再起動

$ sudo /etc/init.d/postfix restart

エラーの場合
error
postfix/postfix-script: warnig: not owned by postfix: /var/lib/postfix ./master.loc

ファイルのアクセス権限変更

$sudo chown -R postfix /var/lib/postfix

(6) 起動チェック
$ ps aux | grep postfix



(7)ユーザー設定

書式
`postfix_user_name`: `unix_user_name`

$ sudo vi /etc/ailiases

user01: user01
user02: user02


(8)ユーザー宛に送る

echo "メールの内容" | mail -s "題名" メールアドレス
とタイプする

送りたいユーザーのメールアドレスがuser01@example.localnetと仮定した場合

$ echo "This is postfix test1" | mail -s test user01
$ echo "This is postfix test2" | mail -s test user01@example.localnet
$ echo "This is postfix test3" | mail -s "mail subject" user01@example.localnet

(9)送れているか確認。

コマンドライン メールクライアントの導入
$ sudo apt-get install mailutils

実行
$ mail

3通届いているはずなので、読みたいメールの番号をタイプ

1とタイプすると
"This is postfix test1"というメールのヘッダーから表示される


メール送信キューが 空か確認

$mailq
Mail queue is empty なら ok

キュー内のメールを再度送信するコマンドは

$ sudo sendmail -q

どうしてもエラーが出て送れないメールをキューから削除するには、

$ sudo postsuper -d (キューID)

全部削除する場合は、

$ sudo postsuper -d ALL



[注意]

※postfixが起動しない

起動チェック
ps aux | grep postfix


$ sudo /etc/init.d/postfix start

エラーの場合
error
postfix/postfix-script: warnig: not owned by postfix: /var/lib/postfix ./master.loc

ファイルのアクセス権限変更

$sudo chown -R postfix /var/lib/postfix



[参考]

Postfix (SMTPサーバー)/Ubuntu 8.04
http://www.shitomi.jp/ubuntu804/postfix.html


Postfix (SMTPサーバー)/Ubuntu 8.04
http://www.shitomi.jp/ubuntu804/postfix.html

Ubuntu/postfix@ローカル - TOBY SOFT wiki
http://tobysoft.net/wiki/index.php?Ubuntu%2Fpostfix%40%A5%ED%A1%BC%A5%AB%A5%EB

Ubuntu Sever Edition を使ったサーバ構築のメモ
http://www.kazutoyo.com/ubuntu/


0 コメント: