メールサーバー構築(Postfix+Dovecot)編 合計:
昨日:
今日:
更新日:2008/5/9
<<ホームへ戻る


ここでは、送信メールサーバーにはPostfix、受信メールサーバーにはDovecotを使用した場合の構築方法を
記します。
なお、Postfixは迷惑メールの不正中継に利用されないようにするため、、SMTP-Auth機能をもたせる。
また、DovecotはPOP/IMAPサーバーとして構築する。構築が、一番簡単な組み合わせかなと個人的には、
思います。
◆Postfix(送信メールサーバー)のインストール <<TOP

yumで、通常通りインストールする。

[root@server ~]# yum -y install postfix
Loading "downloadonly" plugin
Loading "installonlyn" plugin
Loading "fastestmirror" plugin
Setting up Install Process
    ・
    ・
    ・
Downloading Packages:
(1/1): postfix-2.3.3-2.i3 100% |=========================| 3.6 MB    00:00     
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing: postfix                      ######################### [1/1] 

Installed: postfix.i386 2:2.3.3-2
Complete!
     

 

◆Postfixの設定 <<TOP

@、postfixの設定ファイルを編集。

[root@server ~]# vi /etc/postfix/main.cf ← postfixの設定ファイルの編集
    ・
    ・
# INTERNET HOST AND DOMAIN NAMES
#
# The myhostname parameter specifies the internet hostname of this
# mail system. The default is to use the fully-qualified domain name
# from gethostname(). $myhostname is used as a default value for many
# other configuration parameters.
#
#myhostname = host.domain.tld
#myhostname = virtual.domain.tld
myhostname = server.arisonsvr.org ← 自ドメイン名(FQDN)を指定

# The mydomain parameter specifies the local internet domain name.
# The default is to use $myhostname minus the first component.
# $mydomain is used as a default value for many other configuration
# parameters.
#
#mydomain = domain.tld
mydomain = arisonsvr.org ← 自ドメイン名を指定

# SENDING MAIL
# 
# The myorigin parameter specifies the domain that locally-posted
# mail appears to come from. The default is to append $myhostname,
# which is fine for small sites.  If you run a domain with multiple
# machines, you should (1) change this to $mydomain and (2) set up
# a domain-wide alias database that aliases each user to
# user@that.users.mailhost.
#
# For the sake of consistency between sender and recipient addresses,
# myorigin also specifies the default domain name that is appended
# to recipient addresses that have no @domain part.
#
#myorigin = $myhostname
#myorigin = $mydomain
myorigin = $mydomain ← 送信者メールアドレスの@以降をドメイン名にする

# RECEIVING MAIL
# The inet_interfaces parameter specifies the network interface
# addresses that this mail system receives mail on.  By default,
# the software claims all active interfaces on the machine. The
# parameter also controls delivery of mail to user@[ip.address].
#
# See also the proxy_interfaces parameter, for network addresses that
# are forwarded to us via a proxy or network address translator.
#
# Note: you need to stop/start Postfix when this parameter changes.
#
#inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
#inet_interfaces = localhost

inet_interfaces = all ← 外部からのメール受信を許可

# The proxy_interfaces parameter specifies the network interface
    ・
    ・
#
# Specify a list of host or domain names, /file/name or type:table
# patterns, separated by commas and/or whitespace. A /file/name
# pattern is replaced by its contents; a type:table is matched when
# a name matches a lookup key (the right-hand side is ignored).
# Continue long lines by starting the next line with whitespace.
#
# See also below, section "REJECTING MAIL FOR UNKNOWN LOCAL USERS".
#
#mydestination = $myhostname, localhost.$mydomain, localhost
    ↓ 自ドメイン宛メールを受信できるようにする
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
#       mail.$mydomain, www.$mydomain, ftp.$mydomain

# REJECTING MAIL FOR UNKNOWN LOCAL USERS
   ・
   ・
# DELIVERY TO MAILBOX
#
# The home_mailbox parameter specifies the optional pathname of a
# mailbox file relative to a user's home directory. The default
# mailbox file is /var/spool/mail/user or /var/mail/user.  Specify
# "Maildir/" for qmail-style delivery (the / is required).
#
#home_mailbox = Mailbox
#home_mailbox = Maildir/
home_mailbox = Maildir ← メールボックス形式をMaildir形式にする

    ・
    ・
# SHOW SOFTWARE VERSION OR NOT
#
# The smtpd_banner parameter specifies the text that follows the 220
# code in the SMTP server's greeting banner. Some people like to see
# the mail version advertised. By default, Postfix shows no version.
#
# You MUST specify $myhostname at the start of the text. That is an
# RFC requirement. Postfix itself does not care.
#
#smtpd_banner = $myhostname ESMTP $mail_name
#smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)
smtpd_banner = $myhostname ESMTP unknown ← メールサーバーソフト名の隠蔽化

# PARALLEL DELIVERY TO THE SAME DESTINATION
#
    ・
    ・
# readme_directory: The location of the Postfix README files.
#
readme_directory = /usr/share/doc/postfix-2.3.3/README_FILES

    ↓ 以下を最終行に追加(smtp-auth)の設定

smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostnamesmtpd_recipient_restrictions =
    permit_mynetworks
    permit_sasl_authenticated
    reject_unauth_destination

#message_size_limitを指定する10M
message_size_limit = 10485760

 

◆smtp-authの設定 <<TOP

SMTP-Auth用ユーザ名、パスワードにシステムのユーザ名、パスワードを使用する場合は、saslauthdを起動。

[root@server ~]# /etc/rc.d/init.d/saslauthd start ← saslauthdの起動
saslauthd を起動中:                                        [  OK  ]

[root@server ~]# chkconfig saslauthd on ← saslauthd自動起動設定

[root@server ~]# chkconfig --list saslauthd ← saslauthd自動起動設定確認
saslauthd       0:off   1:off   2:on    3:on    4:on    5:on    6:off

[root@server ~]#
      

 

SMTP-Auth用ユーザ名、パスワードをシステムのユーザ名、パスワードと別々にする場合は

[root@server ~]# vi /usr/lib/sasl2/smtpd.conf
#pwcheck_method: saslauthd
    ↓  下記のように変更
pwcheck_method: auxprop
      

 

◆Maildir形式メールボックス作成 <<TOP

Postfixのメール格納形式は、デフォルトで共有ディレクトリ形式(「/var/spool/mail/ユーザ名」というファイルに全てのメールが蓄積されていく形式)です。それで、アクセス性能改善及びセキュリティ強化の観点からMaildir形式へ移行する。

【既存ユーザの対処方法】

【新規ユーザーの対処方法】

新規ユーザ追加時、自動でMaildir形式のディレクトリが作成するようにする。

[root@server ~]# mkdir -p /etc/skel/Maildir/new ← 新規ユーザ追加時に自動でMaildir/newメールボックス作成  

[root@server ~]# mkdir -p /etc/skel/Maildir/cur ← 新規ユーザ追加時に自動でMaildir/curメールボックス作成

[root@server ~]# mkdir -p /etc/skel/Maildir/tmp ← 新規ユーザ追加時に自動でMaildir/tmpメールボックス作成
 
[root@server ~]# chmod -R 700 /etc/skel/Maildir/ ← 新規ユーザ追加時に自動でMaildirメールボックス作成
      

 

◆未承諾広告メールの削除 <<TOP

件名に「未承諾広告」と記されているメールは、削除するようにする。

[root@server ~]# vi /etc/postfix/main.cf
   ・
   ・
#
# Avoid shell meta characters because they will force Postfix to run
# an expensive shell process. Procmail alone is expensive enough.
#
# IF YOU USE THIS TO DELIVER MAIL SYSTEM-WIDE, YOU MUST SET UP AN
# ALIAS THAT FORWARDS MAIL FOR ROOT TO A REAL USER.
#
#mailbox_command = /some/where/procmail
#mailbox_command = /some/where/procmail -a "$EXTENSION"
mailbox_command = /usr/bin/procmail ← 追加(Procmailと連携するようにする)  

# The mailbox_transport specifies the optional transport in master.cf		  

[root@server ~]# vi /etc/procmailrc ← procmail設定ファイル作成
SHELL=/bin/bash
PATH=/usr/bin:/bin
DROPPRIVS=yes
MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/
LOGFILE=$HOME/.procmail.log # ログ出力先
#VERBOSE=ON # 詳細ログ出力

# 未承諾広告メール削除
:0
* ^Subject:.*iso-2022-jp
* ^Subject:\/.*
* ? echo "$MATCH" | nkf -mwZ2 | sed 's/[[:space:]]//g' | egrep '未承諾広告※'
/dev/null

[root@server ~]# vi /etc/logrotate.d/procmail ← procmailログローテーション設定ファイル作成
/home/*/.procmail.log {
    missingok
    nocreate
    notifempty
}

      

 

アフィリエイトならリンクシェア
◆メールサーバー切り替え <<TOP

@、sendmailがデフォルトで動いているならストップして、postfixに切り替える。

[root@server ~]# /etc/rc.d/init.d/sendmail stop ← sendmail停止

[root@server ~]# chkconfig sendmail off ← sendmail自動起動設定解除

[root@server ~]# chkconfig --list sendmail ← sendmail自動起動設定解除確認

sendmail        0:off   1:off   2:off   3:off   4:off   5:off   6:off ← 全ランレベルoffの確認

[root@server ~]#
      

A、システムで利用するメールサーバーをsendmailからpostfixに切り替える。

[root@server ~]# alternatives --config mta ← メールサーバーの切り替え

2 プログラムがあり 'mta' を提供します。

  選択       コマンド
-----------------------------------------------
*+ 1           /usr/sbin/sendmail.sendmail
   2           /usr/sbin/sendmail.postfix

Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:2 ← 2を入力する

[root@server ~]# 
      

B、postfixの起動

[root@server ~]# /etc/rc.d/init.d/postfix start ← postfixの起動

postfix を起動中:                                          [  OK  ]

[root@server ~]# chkconfig postfix on ← postfix自動起動設定

[root@server ~]# chkconfig --list postfix ← postfix自動起動設定の確認

postfix         0:off   1:off   2:on    3:on    4:on    5:on    6:off ← ランレベル2〜5オンの確認

[root@server ~]#
      

C、ポート25番をルーター側でオープンする。

当サーバーの場合は、ルーターの設定を参考にしてください。

ポートチェック【外部からポート開放確認】で「host名」にサーバー名(例:arisonsvr.org)、「port番号」に25と入力して「ポートチェック」ボタンをクリックして、「ホスト=arisonsvr.org ポート=25 にアクセスできました。」と表示されることを確認。これで、外部から見てもポート25はオープンしています。

 
 
◆dovecot(受信メールサーバー)のインストール <<TOP

 

[root@server ~]# yum -y install dovecot ← dovecotのインストール
Loading "downloadonly" plugin
Loading "installonlyn" plugin
Loading "fastestmirror" plugin
    ・
    ・
  Installing: perl-DBI                     ######################### [1/3] 
  Installing: mysql                        ######################### [2/3] 
  Installing: dovecot                      ######################### [3/3] 

    ↑ インストールパッケージによっては,上記のように関連するものもインストールされる。

Installed: dovecot.i386 0:1.0-1.2.rc15.el5
Dependency Installed: mysql.i386 0:5.0.22-2.2.el5_1.1 perl-DBI.i386 0:1.52-1.fc6
Complete!

[root@server ~]#
      
 
◆dovecotの設定 <<TOP

 

[root@server ~]# vi /etc/dovecot.conf
    ・
    ・
# Protocols we want to be serving: imap imaps pop3 pop3s
# If you only want to use dovecot-auth, you can set this to "none".
#protocols = imap imaps pop3 pop3s
protocols = imap imaps pop3 pop3s  ← 設定するプロトコルの指定
    ・
    ・
    ・
# See doc/variables.txt for full list. Some examples:
#
#   mail_location = maildir:~/Maildir
#   mail_location = mbox:~/mail:INBOX=/var/mail/%u
#   mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n
#
# http://wiki.dovecot.org/MailLocation
#
#mail_location =
mail_location = maildir:~/Maildir ← mail_locationをMaildir方式とする
    ・
    ・

[root@server ~]#
      
 
◆dovecotの起動 <<TOP

@、dovecotの起動

[root@server ~]#  /etc/rc.d/init.d/dovecot start ← dovecotの起動

Dovecot Imap を起動中:                                     [  OK  ]

[root@server ~]#

      

A、ポート110番(POP)とポート143番(IMAP)をルーター側でオープンする

当サーバーの場合は、ルーターの設定を参考にしてください。

ポートチェック【外部からポート開放確認】で「host名」にサーバー名(例:arisonsvr.org)、「port番号」に110あるいは143と入力して「ポートチェック」ボタンをクリックして、「ホスト=arisonsvr.org ポート=110または143 にアクセスできました。」と表示されることを確認。これで、外部から見てもポート110(POP)と143(IMAP)は、オープンしています。

 
 
 
 
 
 
◆メール不正中継のテスト <<TOP

RBL.JPで「ホスト名」に自宅サーバーのホスト名(例:arisonsvr.org)を入力して「Check」ボタンをクリックする。
19種類のテストが行われ、下記のようにページ最後尾にno relays accepted.と表示されればOK。

   ・

   ・

中継テスト その19

>>> RSET
<<< 250 2.0.0 Ok
>>> MAIL FROM: <rlychk@localhost>
<<< 250 2.1.0 Ok
>>> RCPT TO: <rlytest@h.rbl.jp>
<<< 554 5.7.1 <rlytest@h.rbl.jp>: Relay access denied
relay NOT accepted!!

接続を閉じています...

>>> QUIT
<<< 221 2.0.0 Bye

第三者中継テストの結果

全てのテストが行われました, no relays accepted.


Return to RBL.JP home page Copyright c 2002-2004 RBL.JP Project.

 

 
◆広告等 <<TOP