■Postfixのインストール
[root@server1 ~]# yum -y install postfix 読み込んだプラグイン:fastestmirror, langpacks, priorities Loading mirror speeds from cached hostfile * base: ftp.riken.jp * centosplus: mirrors.btte.net * epel: ftp.kddilabs.jp * extras: ftp.riken.jp * rpmforge: ftp.kddilabs.jp * updates: mirrors.btte.net 45 packages excluded due to repository priority protections パッケージ 2:postfix-2.10.1-6.el7.x86_64 はインストール済みか最新バージョンです 何もしません
■Postfixの設定
Postfixの基本的な設定は、/etc/postfix/main.cfで行う
[root@server1 ~]# vi /etc/postfix/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@server1 ~]# systemctl restart postfix
■SMTP Auth設定
SMTP AuthではCyrus SASLと呼ばれる認証プログラムを利用している。 PostfixでCyrus SASLを利用出来るように設定する必要がある。
[root@server1 ~]# vi /etc/sasl2/smtpd.conf 設定ファイルの最後に追記 mech_list: plain login cram-md5 digest-md5 saslauthdの起動 [root@server1 ~]# systemctl start saslauthd saslauthdの自動起動設定 [root@server1 ~]# systemctl enable saslauthd ln -s '/usr/lib/systemd/system/saslauthd.service' '/etc/systemd/system/multi-user.target.wants/saslauthd.service'
■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 パスワードの入力(入力したパスワードは表示されない ユーザー webmaster のパスワードを変更。 新しいパスワード: ← パスワード 新しいパスワードを再入力してください: ← パスワードを再入力 passwd: すべての認証トークンが正しく更新できました。
■Postfixの起動
[root@server1 ~]# systemctl start postfix
■Postfixの自動起動設定
[root@server1 ~]# systemctl enable postfix
■sendmailパスの確認
掲示板などで投稿があったらメール通知する設定をしている時は CGIのsendmailパスの設定を変更しないと送信エラーになる場合がある。
一般ユーザーでsendmailパスの確認をする [root@server1 ~]# su - higo 最終ログイン: 2014/07/17 (木) 21:48:02 JST 192.168.1.18から開始日時 pts/0 sendmailパスの確認 [higo@server1 ~]$ which sendmail /usr/sbin/sendmail ルートになる [higo@server1 ~]$ su - パスワード: ← ルートのパスワードを入力 最終ログイン: 2014/07/17 (木) 21:48:31 JST日時 pts/0 以下のようにすれば一般ユーザーでもsendmailパスがみえるようになる。 [root@server1 ~]# ln -s /usr/sbin/sendmail /usr/bin/sendmail 一般ユーザーになる [root@server1 ~]# su - higo 最終ログイン: 2014/07/17 (木) 22:44:12 JST日時 pts/0 endmailパスの確認 [higo@server1 ~]$ which sendmail /bin/sendmail
root宛のメールを一般ユーザーへ転送してない場合、rootのメールが肥大化していくので注意が必要。そんな時は手動でroot宛のメールを削除する。
メール容量を確認 [root@server1 ~]# ls -la /var/spool/mail/ 合計 288 drwxrwxr-x. 2 root mail 54 7月 17 22:06 . drwxr-xr-x. 11 root root 4096 7月 14 23:47 .. -rw-rw----. 1 higo mail 0 7月 14 23:56 higo -rw-------. 1 root mail 289357 7月 17 06:12 root -rw-rw----. 1 rpc mail 0 7月 14 23:37 rpc -rw-rw---- 1 webmaster mail 0 7月 17 22:06 webmaster root宛のメールを削除 [root@server1 ~]# cat /dev/null > /var/mail/root 再度メール容量を確認 [root@server1 ~]# ls -la /var/spool/mail/ 合計 4 drwxrwxr-x. 2 root mail 54 7月 17 22:06 . drwxr-xr-x. 11 root root 4096 7月 14 23:47 .. -rw-rw----. 1 higo mail 0 7月 14 23:56 higo -rw-------. 1 root mail 0 7月 17 22:55 root -rw-rw----. 1 rpc mail 0 7月 14 23:37 rpc -rw-rw---- 1 webmaster mail 0 7月 17 22:06 webmaster サーバー管理のレポート送信先を変更 [root@server1 ~]# vi /etc/aliases # Person who should get root's mail #root: marc root: hoge@yokensaka.com → 設定したいメールアドレスを指定する。 変更内容を有効化 [root@server1 ~]# newaliases newaliases コマンドを実行すると、/etc/aliases.db が更新され、変更が反映される。 [root@server1 ~]# ls -l /etc/aliases* -rw-r--r-- 1 root root 1560 9月 14 12:22 /etc/aliases -rw-r--r--. 1 root root 12288 9月 14 19:08 /etc/aliases.db
※SMTPサーバーを使うには、ルーターの設定が必要なので25番のポートを開ける。