メールサーバーを構築するためには、まずメール配送を行うためのSMTPサーバーが必要となる。 SMTPサーバーとして動作するソフトウェアの代表的なものにはPostfix、sendmail、qmailがある。 Postfixはsendmailやqmailより後に開発されたため、それぞれの良い部分を反映して開発されており、簡単に設定することが可能なので、ここではsendmailとの互換性が優れているPostfixを使用する。
■Postfixのインストール
[root@server1 ~]# yum -y install postfix
■Postfixの設定
Postfixの基本的な設定は、/etc/postfix/main.cfで行う
[root@server1 ~]# vi /etc/postfix/main.cf ← viエディタでmain.cfを開く # 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 = server1.yokensaka.com ← #を外して、サーバーのホスト名を設定 #myhostname = virtual.domain.tld # 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 = yokensaka.com ← #を外して、ドメイン名を設定 # 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 ← #を外して、設定を有効に (メールアドレスの「@」以下に付加する文字列を指定) # 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 = all #inet_interfaces = $myhostname #inet_interfaces = $myhostname, localhost inet_interfaces = localhost ↓ 行頭に#を追加(自サーバーからのメールだけを受信する場合は設定しない) #inet_interfaces = localhost # 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 ← 行頭に#を追加 #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain ↓ mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain ← #を外す #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, # mail.$mydomain, www.$mydomain, ftp.$mydomain # Specify "mynetworks_style = host" when Postfix should "trust" # only the local machine. # #mynetworks_style = class #mynetworks_style = subnet ↓ mynetworks_style = subnet ← #を外す #mynetworks_style = host # You can also specify the absolute pathname of a pattern file instead # of listing the patterns here. Specify type:table for table-based lookups # (the value on the table right-hand side is not used). # 内部ネットワークアドレスとローカルホストアドレスを指定 #mynetworks = 168.100.189.0/28, 127.0.0.0/8 ↓ mynetworks = 192.168.1.0/24, 127.0.0.0/8 ← #を外して書き換える #mynetworks = $config_directory/mynetworks #mynetworks = hash:/etc/postfix/network_table # NOTE: Postfix will not automatically forward mail for domains that # list this system as their primary or backup MX host. See the # permit_mx_backup restriction description in postconf(5). # #relay_domains = $mydestination ↓ relay_domains = $mydestination ← #を外す # 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形式にする SMTP Authを有効にする。設定ファイルの最終行まで移動して、以下のように設定を追記。 smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = $myhostname smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination 送信するメール1通当たりのサイズはデフォルトで10MByte、 受信するメール合計の総容量はデフォルトで50MByteに設定されている。 それぞれ5倍の50MByteと250MByteに変更するには以下を最終行へ追加。 message_size_limit = 52428800 ← 1024*1024*50=52428800 mailbox_size_limit = 262144000 ← 1024*1024*250=262144000 変更を有効にする為、postfixを再起動。 [root@server ~]# /etc/rc.d/init.d/postfix reload postfix を再読み込み中: [ OK ]
■SMTP Auth設定
SMTP AuthではCyrus SASLと呼ばれる認証プログラムを利用している。 PostfixでCyrus SASLを利用出来るように設定する必要がある。
[root@server1 ~]# vi /etc/sasl2/smtpd.conf ← smtpd.confを開く 設定ファイルの最後に追記 mech_list: plain login cram-md5 digest-md5 saslauthdの起動 [root@server1 ~]# /etc/init.d/saslauthd start saslauthd を起動中: [ OK ] saslauthdの自動起動設定 [root@server1 ~]# chkconfig saslauthd on saslauthdの自動起動設定確認 [root@server1 ~]# chkconfig --list saslauthd saslauthd 0:off 1:off 2:on 3:on 4:on 5:on 6:off (ランレベル2~5のonを確認)
■root宛メールを一般ユーザ(webmaster)へ転送
システムからroot宛に送られてくるメールを、一般ユーザ(webmaster)へ転送するようにする。
管理者ユーザ宛メールのroot宛転送設定を解除 [root@server1 ~]# sed -i 's/^webmaster/#webmaster/g' /etc/aliases 管理者ユーザ宛メールのroot宛転送設定解除を確認 [root@server1 ~]# grep ^webmaster /etc/aliases ← 結果がなにも表示されないことを確認 root宛メールを管理者ユーザ(webmaster)へ転送するように設定 [root@server1 ~]# sed -i 's/^root/#root/g' /etc/aliases root宛メールを管理者ユーザ(webmaster)へ転送するように設定 [root@server1 ~]# echo "root: webmaster" >> /etc/aliases root宛メールが管理者ユーザ(webmaster)宛へ転送されるかの確認 [root@server1 ~]# grep ^root /etc/aliases root: webmaster ← root宛メールが管理者ユーザ(webmaster)へ転送されるように設定されている 転送先を反映させる [root@server1 ~]# postalias /etc/aliases
■一般ユーザー(webmaster)の作成
webmasterへメールが届くようにするためには一般ユーザー(webmaster)の作成が必要。
一般ユーザ(webmaster)を追加。 [root@server1 ~]# useradd webmaster 一般ユーザーでログインするためにはパスワードを設定する必要がある [root@server1 ~]# passwd webmaster パスワードの入力(入力したパスワードは表示されない) [root@server1 ~]# passwd webmaster ユーザー webmaster のパスワードを変更。 新しいパスワード: ← パスワード 再入力を促されるので、もう一度入力。(上記のパスワードと同じ物を入れる) 新しいパスワードを再入力してください: ← パスワード passwd: 全ての認証トークンが正しく更新できました。
■Postfixの起動
Postfixの起動 [root@server1 ~]# /etc/rc.d/init.d/postfix restart postfix を停止中: [ OK ] postfix を起動中: [ OK ]
■Postfixの自動起動設定
Postfixの自動起動設定 [root@server1 ~]# chkconfig postfix on Postfixの自動起動設定確認 [root@server1 ~]# chkconfig --list postfix postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off (ランレベル2~5のonを確認)
■sendmailパスの確認
掲示板などで投稿があったらメール通知する設定をしている時は CGIのsendmailパスの設定を変更しないと送信エラーになる場合がある。
一般ユーザーでsendmailパスの確認をする [root@server1 ~]# su - higo [higo@server1 ~]$ which sendmail ← sendmailパスの確認 /usr/bin/which: no sendmail in (/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/higo/bin) sendmailパスが見つからないときは 以下のようにすれば一般ユーザーでもsendmailパスがみえるようになる。 [higo@server1 ~]$ su - ← ルートになる パスワード(P): ← ルートのパスワードを入力 [root@server1 ~]# ln -s /usr/sbin/sendmail /usr/bin/sendmail [root@server1 ~]# su - higo ← 一般ユーザーになる [higo@server1 ~]$ which sendmail ← sendmailパスの確認 /usr/bin/sendmail
joyful.cgiではsendmailパスがデフォルトで「/usr/lib/sendmail」になっているので、上記で確認したsendmailパス「/usr/bin/sendmail」に直さないと投稿時に送信エラーになる。
# sendmailパス(メール通知する時) $sendmail = '/usr/lib/sendmail'; ↓ # sendmailパス(メール通知する時) $sendmail = '/usr/bin/sendmail'; ← libをbinに変更
root宛のメールを一般ユーザーへ転送してない場合、rootのメールが肥大化していくので注意が必要。そんな時は手動でroot宛のメールを削除する。
メール容量を確認
[root@server1 ~]# ls -la /var/spool/mail/ 合計 16 drwxrwxr-x. 2 root mail 4096 1月 17 18:41 2013 . drwxr-xr-x. 14 root root 4096 9月 23 20:47 2011 .. -rw-rw---- 1 clamav mail 0 9月 30 22:44 2011 clamav -rw-rw----. 1 higo mail 0 9月 30 20:10 2011 higo -rw------- 1 root mail 11710847 1月 17 18:14 2013 root -rw-rw----. 1 rpc mail 0 9月 30 19:53 2011 rpc root宛のメールを削除 [root@server1 ~]# cat /dev/null > /var/mail/root 再度メール容量を確認 [root@server1 ~]# ls -la /var/spool/mail/ 合計 8 drwxrwxr-x. 2 root mail 4096 1月 17 18:41 2013 . drwxr-xr-x. 14 root root 4096 9月 23 20:47 2011 .. -rw-rw---- 1 clamav mail 0 9月 30 22:44 2011 clamav -rw-rw----. 1 higo mail 0 9月 30 20:10 2011 higo -rw------- 1 root mail 0 1月 17 19:45 2013 root -rw-rw----. 1 rpc mail 0 9月 30 19:53 2011 rpc
サーバー管理のレポート送信先を変更
ファイルの末尾の記述を以下のように修正
[root@server1 ~]# vi /etc/aliases # Person who should get root's mail #root: marc ↓ root: ****@******.co.jp ← #を外して送信先メールアドレスを記述 転送先を反映させる [root@server1 ~]# postalias /etc/aliases
※SMTPサーバーを使うには、ルーターの設定が必要なので25番のポートを開ける。
■ ポートチェック【ポート開放確認】
「管理しているサーバーが外部から接続アクセスできるか?」「ポートは開放されているか?」「portは閉じているか?」「ルータのポートは開放されているか」等の
ポートチェック・ポートの疎通確認テストはこちらで
Postfixをインストールしただけでは、メールの読み出しは出来ない。 Postfixはメールを配信するためのSMTPサーバーとしての機能しか持たないので、dovecotをインストールすることにより、POP3/IMAP4どちらでもメールを読み出せるようにする。