CentOS7 メール設定 postfix dovecot
DNS設定
MXレコード、メールサーバのAレコード設定
メールサーバーのサブドメイン「mail」は任意
ホスト名 TYPE TTL VALUE 優先 mail.lists111.com A 3600 133.130.68.33 lists111.com MX 3600 mail.lists111.com 10
ポート番号を使用しているプロセスを確認
netstat -tanp
メールサーバが使用するポート開放
- SMPT(25)
- SMTPS(465)
- IMAPS(993)
- POP3S(995)
# firewall-cmd --add-port=25/tcp --permanent # firewall-cmd --add-port=465/tcp --permanent # firewall-cmd --add-port=993/tcp --permanent # firewall-cmd --add-port=995/tcp --permanent // 設定反映 # firewall-cmd --reload // 確認 # firewall-cmd --list-ports 465/tcp 995/tcp 25/tcp 993/tcp
基本パッケージ、開発ツールインストール
# yum -y groupinstall base # yum -y groupinstall development # yum -y groupinstall network-tools
Postfix、Dovecotインストール
# yum -y install postfix // 確認 # postconf | grep mail_version // 自動起動設定 # systemctl enable postfix.service // 起動 # systemctl start postfix.service # yum -y install dovecot # dovecot --version # systemctl enable dovecot # systemctl start dovecot
mail.lists111.comの Let’s EncryptのSSL/TLS証明書取得
※Let’s Encryptの初期設定済 (設定方法)
# systemctl stop httpd.service # cd /home/ユーザー名/letsencrypt # ./letsencrypt-auto certonly -a standalone -d mail.lists111.com # systemctl start httpd.service
Postfix の設定
cp /etc/postfix/main.cf /etc/postfix/main.cf.org
vi /etc/postfix/main.cf # メールサーバのホスト名(FQDN)指定 #myhostname = host.domain.tld ↓ myhostname = mail.lists111.com # メールサーバのドメイン名指定 #mydomain = domain.tld ↓ mydomain = lists111.com # メールアドレスの形式:ユーザ名@ドメイン名 #myorigin = $mydomain ↓ myorigin = $mydomain # 全てのホストからメール受信 inet_interfaces = localhost ↓ inet_interfaces = all # mydomain で指定したドメイン宛のメールを受信 mydestination = $myhostname, localhost.$mydomain, localhost #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain ↓ #mydestination = $myhostname, localhost.$mydomain, localhost mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain # 存在しないメールアドレス(ユーザ)宛のメールの受信拒否 #local_recipient_maps = proxy:unix:passwd.byname $alias_maps ↓ local_recipient_maps = proxy:unix:passwd.byname $alias_maps # 中継を許可する宛先ドメインを指定 #relay_domains = $mydestination ↓ relay_domains = $mydestination # 転送サーバ不使用 #relayhost = [an.ip.add.ress] ↓ relayhost = # メールの格納フォーマット指定 #home_mailbox = Maildir/ ↓ home_mailbox = Maildir/ # 不要な情報を非公開 #smtpd_banner = $myhostname ESMTP $mail_name ↓ smtpd_banner = $myhostname ESMTP ##### 最下部に追加 ##### # VRFYコマンド禁止 disable_vrfy_command = yes # MailBoxの最大サイズ # メールボックスがMaildir形式のためこの設定は無視されるが「message_size_limit」との兼ね合いのため設定 mailbox_size_limit = 204800000 # 受信メールサイズの制限「mailbox_size_limit」より少ない値 message_size_limit = 5120000 # 接続元の制限(スパムメール対策) smtpd_client_restrictions = check_client_access hash:/etc/postfix/access reject_rbl_client zen.spamhaus.org reject_rbl_client all.rbl.jp reject_non_fqdn_sender reject_unknown_sender_domain # エンベロープアドレス(MAIL FROM)による制限(スパムメール対策) smtpd_sender_restrictions = reject_rhsbl_sender zen.spamhaus.org reject_unknown_sender_domain ##### SMTP-Auth関連 ##### # SASL認証を有効化 smtpd_sasl_auth_enable = yes # Dovecot SASL ライブラリを指定 smtpd_sasl_type = dovecot # Dovecot SASL ライブラリの認証ソケットファイル /var/spool/postfix/ からの相対パスで記述 smtpd_sasl_path = private/auth # 古いバージョンの AUTH コマンド (RFC 2554) を実装した SMTP クライアントとの相互運用性を有効 broken_sasl_auth_clients = yes ##### TLS/SSL関連 ##### # TLSを有効化 smtpd_use_tls = yes # 宛先のメールサーバがTLSに対応していれば、通信を暗号化 smtp_tls_security_level = may # サーバ証明書と秘密鍵を指定 smtpd_tls_cert_file = /etc/letsencrypt/live/mail.lists111.com/fullchain.pem smtpd_tls_key_file = /etc/letsencrypt/live/mail.lists111.com/privkey.pem # TLSログレベルの設定 # 0:出力しない 1:TLSハンドシェイクと証明書情報 2:TLSネゴシエーションの全て smtpd_tls_loglevel = 1 # 暗号に関する情報を "Received:" メッセージヘッダに含める smtpd_tls_received_header = yes # 接続キャッシュファイルの指定 smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache # キャッシュの保持時間の指定 smtpd_tls_session_cache_timeout = 3600s # 認証を通過したものはリレーを許可する(permit_sasl_authenticated) smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination
smtps(SMTP-Auth over SSL)有効化
ファイルのバックアップ
# cp /etc/postfix/master.cf /etc/postfix/master.cf.org
# vi /etc/postfix/master.cf #smtps inet n - n - - smtpd # -o syslog_name=postfix/smtps # -o smtpd_tls_wrappermode=yes # -o smtpd_sasl_auth_enable=yes # -o smtpd_reject_unlisted_recipient=no # -o smtpd_client_restrictions=$mua_client_restrictions # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject # -o milter_macro_daemon_name=ORIGINATING ↓ smtps inet n - n - - smtpd # -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes # -o smtpd_reject_unlisted_recipient=no # -o smtpd_client_restrictions=$mua_client_restrictions # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject # -o milter_macro_daemon_name=ORIGINATING
ルックアップテーブル作成
# postmap /etc/postfix/access
設定に誤りがないかチェック
問題ない場合は表示なし
# postfix check
Postfix再起動
# systemctl restart postfix
Dovecot の設定
受信プロトコル設定
# vi /etc/dovecot/dovecot.conf #protocols = imap pop3 lmtp ↓ protocols = imap pop3
暗号化を使う imaps と pop3s を有効、
平文で通信する imap と pop3 は「port = 0」を設定し無効に
# cp /etc/dovecot/conf.d/10-master.conf /etc/dovecot/conf.d/10-master.conf.org # vi /etc/dovecot/conf.d/10-master.conf service imap-login { inet_listener imap { #port = 143 ↓ port = 0 } inet_listener imaps { #port = 993 #ssl = yes ↓ port = 993 ssl = yes } } service pop3-login { inet_listener pop3 { #port = 110 ↓ port = 0 } inet_listener pop3s { #port = 995 #ssl = yes ↓ port = 995 ssl = yes } }
Dovecot SASL ライブラリの認証ソケットファイル指定
# vi /etc/dovecot/conf.d/10-master.conf service auth { ・・・ # Postfix smtp-auth #unix_listener /var/spool/postfix/private/auth { # mode = 0666 #} ・・・ } ↓ service auth { ・・・ # Postfix smtp-auth unix_listener /var/spool/postfix/private/auth { mode = 0660 user = postfix group = postfix } ・・・ }
認証方式設定
(平文パスワードを許可しだが、SSL/TLSで暗号化されますので問題ない)
# cp /etc/dovecot/conf.d/10-auth.conf /etc/dovecot/conf.d/10-auth.conf.org # vi /etc/dovecot/conf.d/10-auth.conf #disable_plaintext_auth = yes ↓ disable_plaintext_auth = no auth_mechanisms = plain ↓ auth_mechanisms = plain login
SSL/TLSの有効化とサーバ証明書と秘密鍵指定
# cp /etc/dovecot/conf.d/10-ssl.conf /etc/dovecot/conf.d/10-ssl.conf.org # vi /etc/dovecot/conf.d/10-ssl.conf ssl = required ↓ ssl = yes ssl_cert = </etc/pki/dovecot/certs/dovecot.pem ssl_key = </etc/pki/dovecot/private/dovecot.pem ↓ ssl_cert = </etc/letsencrypt/live/mail.lists.com/fullchain.pem ssl_key = </etc/letsencrypt/live/mail.lists.com/privkey.pem
メールボックスの場所指定
# cp /etc/dovecot/conf.d/10-mail.conf /etc/dovecot/conf.d/10-mail.conf.org # vi /etc/dovecot/conf.d/10-mail.conf #mail_location = ↓ mail_location = maildir:~/Maildir
ログの出力先変更
# cp /etc/dovecot/conf.d/10-logging.conf /etc/dovecot/conf.d/10-logging.conf.org # vi /etc/dovecot/conf.d/10-logging.conf #log_path = syslog ↓ log_path = /var/log/dovecot/dovecot.log
ログの出力先作成
# mkdir /var/log/dovecot
Dovecot 再起動
# systemctl restart dovecot
journalctl -u dovecot.service
/var/spool/postfix/private/auth が作成されているか確認
# ls -l ・・・ srw-rw-rw- 1 postfix postfix 0 1月 7 23:04 auth ・・・ // ファイルが作成されない場合はエラーログを確認 # journalctl -u dovecot.service
ログのローテーション設定
1日ごとにファイル名に日付、保存期間60日。
Postfixログの設定
出力先ディレクトリ作成
# mkdir /var/log/mail
出力先の変更
# vm /etc/rsyslog.conf mail.* -/var/log/maillog ↓ mail.* -/var/log/mail/maillog
syslog再起動
# systemctl restart rsyslog
不要なログ削除
# rm -f /var/log/maillog*
ログローテーション設定
# /etc/logrotate.d/syslog // 下記削除 /etc/logrotate.d/syslog // 新規作成 # vi /etc/logrotate.d/maillog /var/log/mail/maillog { daily missingok dateext rotate 60 sharedscripts postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true endscript }
確認
# logrotate -dv /etc/logrotate.d/maillog
下記のような表示でOK
rotating pattern: /var/log/mail/maillog after 1 days (60 rotations) empty log files are rotated, old logs are removed
Dovecotログの設定
// 新規作成 # /etc/logrotate.d/dovecot /var/log/dovecot/dovecot.log { daily missingok dateext rotate 60 sharedscripts postrotate /bin/kill -USR1 `cat /var/run/dovecot/master.pid 2>/dev/null` 2> /dev/null || true endscript }
確認
下記のような表示でOK
rotating pattern: /var/log/mail/maillog after 1 days (60 rotations) empty log files are rotated, old logs are removed
メールアカウント作成
contact@lists111.com を作成
シェルログインは必要ないので/sbin/nologinを指定
# useradd -s /sbin/nologin contact # passwd contact
メーラー設定
受信サーバー
- ・ユーザー名
- contact
- ・サーバー
- IMAP
- ・ホスト
- mail.lists111.com
- ・ポート
- 993
- ・SSL
- SSL/TLS
- ・認証方式
- 通常のパスワード認証
- ・ユーザー名
- contact
- ・サーバー
- SMTP
- ・ホスト
- mail.lists111.com
- ・ポート
- 465
- ・SSL
- SSL/TLS
- ・認証方式
- 通常のパスワード認証
第三者中継チェック
・第三者中継チェック RBL.JP
http://www.rbl.jp/svcheck.php
- mail.lists111.com 入力
- 下記表示でOK
- 第三者中継テストの結果
全てのテストが行われました, no relays accepted.
SPFレコードの設定
v=spf1 は固定。
ip4: IPアドレス
[/text]
- ・ホスト名
- [空欄].lists111.com
- ・TYPE
- ・TTL
- 300
- ・VALUE
- v=spf1 ip4:133.130.68.33 -all
・確認(時間を置いて)
# dig lists111.com txt ・・・ ;; ANSWER SECTION: lists111.com. 300 IN TXT "v=spf1 ip4:133.130.68.33 -all"
・メールのソース
下記があれがOK
Received-SPF: pass ・・・
参考にさせて頂いたサイト
あぱーブログ