centOSのVPSサーバでメールサーバ(POSTFIXとDOVECOT)設定した。-その1-

続き。一番面倒なメールサーバの設定だぁ。。。
これも、POSTFIXとDOVECOTがインストール(yum install postfix dovecot)された後から。
長くなるので、先にPOSTFIX(SMTPサーバ)関連から。

1)設定ファイルを編集する。

[root@server]# cp /etc/postfix/main.cf /etc/postfix/main.cf.org →オリジナルの保存のおまじない。
[root@server]# nano /etc/postfix/main.cf

  1. #soft_bounce = no (確認:コメントアウト=無効)
    queue_directory = /var/spool/postfix (確認)
    command_directory = /usr/sbin (確認)
    daemon_directory = /usr/libexec/postfix (確認)
    mail_owner = postfix (確認)
    #default_privs = nobody (確認)
  2. myhostname = mail.○○○.com (自メールサーバ名にしてコメントを取る=有効)
  3. mydomain = ○○○.com (自ホスト名にしてコメントを取る=有効)
  4. myorigin = $myhostname (コメントを取る=有効)
  5. inet_interfaces = all (コメントを取る=有効)
    #inet_interfaces = localhost (コメントアウト=無効)
  6. #proxy_interfaces = (確認:コメントアウト=無効)
    #proxy_interfaces = 1.2.3.4 (確認:コメントアウト=無効)
  7. mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain (不足内容を追記またはコメントを入れ替える)
  8. #local_recipient_maps = unix:passwd.byname $alias_maps (確認:コメントアウト=無効)
    #local_recipient_maps = proxy:unix:passwd.byname $alias_maps (確認:コメントアウト=無効)
    #local_recipient_maps = (確認:コメントアウト=無効)
  9. unknown_local_recipient_reject_code = 550 (確認)
  10. #mynetworks_style = class (確認:コメントアウト=無効)
    #mynetworks_style = subnet (確認※コメントアウトされててもこれがデフォルト)
    #mynetworks_style = host (確認:コメントアウト=無効)
  11. #mynetworks = 168.100.189.0/28, 127.0.0.0/8 (確認:コメントアウト=無効)
    #mynetworks = $config_directory/mynetworks (確認:コメントアウト=無効)
    #mynetworks = hash:/etc/postfix/network_table (確認:コメントアウト=無効)
  12. #relay_domains = $mydestination (確認※コメントアウトされててもこれがデフォルト)
  13. #relayhost = $mydomain (確認:コメントアウト=無効)
    #relayhost = [gateway.my.domain] (確認:コメントアウト=無効)
    #relayhost = [mailserver.isp.tld] (確認:コメントアウト=無効)
    #relayhost = uucphost (確認:コメントアウト=無効)
    #relayhost = [an.ip.add.ress] (確認:コメントアウト=無効)
  14. #relay_recipient_maps = hash:/etc/postfix/relay_recipients (確認:コメントアウト=無効)
  15. #in_flow_delay = 1s (確認:コメントアウト=無効)
  16. #alias_maps = dbm:/etc/aliases (確認:コメントアウト=無効)
    alias_maps = hash:/etc/aliases (確認)
    #alias_maps = hash:/etc/aliases, nis:mail.aliases (確認:コメントアウト=無効)
    #alias_maps = netinfo:/aliases (確認:コメントアウト=無効)
  17. #alias_database = dbm:/etc/aliases (確認:コメントアウト=無効)
    #alias_database = dbm:/etc/mail/aliases (確認:コメントアウト=無効)
    alias_database = hash:/etc/aliases (確認)
  18. #recipient_delimiter = + (確認:コメントアウト=無効)
  19. home_mailbox = Maildir/ (コメントを取る=有効)
  20. #mail_spool_directory = /var/mail (確認:コメントアウト=無効)
    #mail_spool_directory = /var/spool/mail (確認:コメントアウト=無効)
  21. #mailbox_command = /some/where/procmail (確認:コメントアウト=無効)
    #mailbox_command = /some/where/procmail -a “$EXTENSION” (確認:コメントアウト=無効)
  22. #mailbox_transport = lmtp:unix:/var/lib/imap/socket/lmtp (確認:コメントアウト=無効)
  23. #mailbox_transport = cyrus (確認:コメントアウト=無効)
  24. #fallback_transport = lmtp:unix:/var/lib/imap/socket/lmtp (確認:コメントアウト=無効)
    #fallback_transport = (確認:コメントアウト=無効)
  25. #luser_relay = $user@other.host (確認:コメントアウト=無効)
    #luser_relay = $local@other.host (確認:コメントアウト=無効)
    #luser_relay = admin+$local (確認:コメントアウト=無効)
  26. #header_checks = regexp:/etc/postfix/header_checks (確認:コメントアウト=無効)
  27. #fast_flush_domains = $relay_domains (確認:コメントアウト=無効)
  28. #smtpd_banner = $myhostname ESMTP $mail_name (確認:コメントアウト=無効)
    #smtpd_banner = $myhostname ESMTP $mail_name ($mail_version) (確認:コメントアウト=無効)
  29. #local_destination_concurrency_limit = 2 (確認:コメントアウト=無効)
    #default_destination_concurrency_limit = 20 (確認:コメントアウト=無効)
  30. debug_peer_level = 2 (確認)
  31. #debug_peer_list = 127.0.0.1 (確認:コメントアウト=無効)
    #debug_peer_list = some.domain (確認:コメントアウト=無効)
  32. debugger_command = (確認)
  33. sendmail_path = /usr/sbin/sendmail.postfix (確認)
  34. newaliases_path = /usr/bin/newaliases.postfix (確認)
  35. mailq_path = /usr/bin/mailq.postfix (確認)
  36. setgid_group = postdrop (確認)
  37. html_directory = no (確認)
  38. manpage_directory = /usr/share/man (確認)
  39. sample_directory = /usr/share/doc/postfix-2.3.3/samples (確認)
  40. readme_directory = /usr/share/doc/postfix-2.3.3/README_FILES (確認)
  41. smtpd_sasl_auth_enable = yes →sasl認証を使う。
    smtpd_sasl_local_domain = $myhostname
    smtpd_sasl_security_options = noanonymous, noplaintext →IDと暗号化されたPW持ってるユーザしか許可しない。
    smtpd_recipient_restrictions = permit_mynetworks,
    permit_sasl_authenticated, reject_unauth_destination
     →メール転送を許可・拒否する範囲。
    smtpd_client_restrictions = permit_mynetworks, reject_rhsbl_client
    rhsbl.ahbl.org, reject_rbl_client spamcop.net, reject_rbl_client
    dynablock.wirehub.net, reject_rbl_client sbl.spamhaus.org,
    reject_unknown_client, permit
     →リストアップしたホストのブラックリストに乗ってるメールは受信しない。自分とブラックリスト外のメールだけ許可。
    broken_sasl_auth_clients = yes
    ※これだけ最後に追記。

※「myorigin = $myhostname」について。これは、今回$mydomainでも基本構わない。メールが受信されたときにその受取ユーザを探しに行くホストを指定している。大規模ネットワークで複数のメールサーバが同ドメイン内にあり、それぞれを検索に行かないといけないような場合は、$mydomainにするが、メールサーバが1つのみの場合は、結果として同じ意味になる。(例:mail1.○○○.com、mail2.○○○.comと複数ある→○○○.com内のメールサーバを全部問い合わせないといけないので、$mydomain。mail.○○○.comのみ→$myhostnameでOK。)
※mynetworkの設定は、何も設定されてない場合(すべたがコメントアウトの場合)、「mynetworks_style = subnet」がデフォルトとなる。ただし、「mynetworks」がいずれかの値でONになっている場合、「mynetworks_style」の値は全て無視される。(=「mynetworks」の値のみが有効)
※「※コメントアウトされててもこれがデフォルト」と注記があるものは、コメントを取ってもコメントアウトしてて、他に設定がない限り、それがデフォルトの設定動作となる。

2)設定ファイル2を編集する。

[root@server]# cp /etc/postfix/master.cf /etc/postfix/master.cf.org →オリジナルの保存のおまじない。
[root@server]# nano /etc/postfix/master.cf

  1. submission inet n – n – – smtpd (コメントを外す=有効)
    -o smtpd_sasl_auth_enable=yes (コメントを外す=有効)
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject (コメントを外す=有効)

3)ユーザのメールディレクトリを作成する。

a)新しいユーザができたときには、自動でメールディレクトリを作るように設定する。

[root@server]# mkdir -p /etc/skel/Maildir/{new,cur,tmp} →ユーザのホームディレクトリの下にメールボックスに関係するディレクトリを作成する。
[root@server]# chmod -R 700 /etc/skel/Maildir/ →メールディレクトリの権限は全てオーナーユーザのみが読み書きできる。

b)既存ユーザのホームディレクトリにもメールボックスを作成する。

・一旦既存ユーザを確認する。(既存ユーザの数と名称が分かっているなら不要)

[root@server]# cd /home/ →/home/ディレクトリへ移る。
[root@server]# ls -la →ディレクトリ内を参照して(ユーザの名前のディレクトリを)見る

ここで、先に作成していたユーザ「namae」くんが発見出来ればOK。
「namae」くんにもメールが送受信できるように、メールボックスを与えてあげましょう。

[root@server]# mkdir -p /home/namae(自分の環境のユーザ名に置き換え)/Maildir/{new,cur,tmp}
[root@server]# chmod -R 700 /home/namae(自分の環境のユーザ名に置き換え)/Maildir/

これだけでは、/Maildir/以下のディレクトリは、作成したrootユーザの所有になっているので、「namae」くんに所有者:グループ変更します。

[root@server]# chown -R namae(自分の環境のユーザ名に置き換え):namae(自分の環境のグループ名に置き換え)/home/nobita/Maildir/

最後に、「namae」くんのメールディレクトリ以下がちゃんと「namae」くん(グループも「namae」くん)の所有になっているか一覧で確認します。

[root@server]# ls -la /home/namae(自分の環境のユーザ名に置き換え)
[root@server]# ls -la /home/namae(自分の環境のユーザ名に置き換え)/Maildir

設定できたら、POSTFIXとSASLAUTHDを起動して、再起動のおまじないをしておきます。

[root@server]# /etc/rc.d/init.d/postfix start
[root@server]# /etc/rc.d/init.d/saslauthd start
※起動。

[root@server]# chkconfig postfix on
[root@server]# chkconfig –list postfix
※POSTFIXの起動レベル設定と確認。

[root@server]# chkconfig saslauthd on
[root@server]# chkconfig –list saslauthd
※SASLAUTHDの起動レベル設定と確認。


※さくらのVPSの場合、sendmailが先にインストールされていて有効になっているので、これをPOSTFIXに切り替えて、SENDMAILをOFFにします。

[root@server]# alternatives –config mta →MTA(SMTPメールサーバ)として登録されているサービス一覧を表示。

「POSTFIX」の番号を入力するか選択し、エンター
念のため上記コマンドで、再度一覧を表示して確認もしとく。

[root@server]# chkconfig sendmail off
[root@server]# chkconfig –list sendmail

SENDMAILがOFFになっていれば、次の再起動で、POSTFIXと入れ替えになります。
※サーバの再起動は、DOVECOTを入れ終わってからにします。

参考にさせていただきました。

(POSTFIXのオプションパラメータについて)
http://www.postfix-jp.info/trans-2.1/jhtml/postconf.5.html
http://www.postfix-jp.info/trans-2.3/jhtml/BASIC_CONFIGURATION_README.html

(設定について)
http://www.obenri.com/_postfix/relay_settings.html
http://kajuhome.com/postfix.shtml
http://www.obenri.com/_postfix/relay_settings.html

*********************************