メールサーバー構築方法「CentOS7+Postfix+dovecot+Let’s Encrypt」
私が行ったCentOS7にメールサーバーを構築した方法を紹介いたします。
今回は、送信サーバーにPostfixを受信サーバーにdovecotを利用しました。
また、SSL認証としてLet’s Encryptを導入しています。
1. ファイアウォールに許可をいれる
firewall-cmd –add-service=smtp –permanent –zone=public
firewall-cmd –add-service=smtps –permanent –zone=public
firewall-cmd –add-service=imaps –pernament –zone=public
firewall-cmd –reload
2. Let’s Encryptのインストール
yum -y install certbot
3. 証明書をインストール
Problem binding to port 80: Could not bind to IPv4 or IPv6.
4. Postfixのインストール
yum -y install postfix
#アップデート
yum -y update postfix
5. Postfixの設定
5-1. main.cfの設定
cd /etc/postfix/
cp -p main.cf main.cf_backup
vi main.cf
#サブドメインを指定する。例:mail.example.com
myhostname = <サブドメイン>
#ドメインを指定する。例:example.com
mydomain = <ドメイン>
#外部からメールを受信できるようにする
inet_interfaces = all
#コメントアウトする
#inet_interfaces = localhost
#mydomain宛のメールを受信できるようにする
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#メールボックス形式をMaildirにする
home_mailbox = Maildir/
#自分がpostfixであることを隠す
smtpd_banner = $myhostname ESMTP unknown
#下記を追記する————–
#SMTP認証を有効にする
smtpd_sasl_auth_enable = yes
#認証にDovecotを使う
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
#TLSを有効化にする
smtpd_use_tls = yes
#宛先のメールサーバがTLSに対応していれば、通信を暗号化する
smtp_tls_security_level = may
#Let’sEncryptのサーバ証明書と秘密鍵を指定
smtpd_tls_cert_file = /etc/letsencrypt/live/<コモンネーム>/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/<コモンネーム>/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
#認証を通過したものはリレーを許可する。
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination
5-2. master.cfの設定
cd /etc/postfix/
cp -p master.cf master.cf_backup
vi master.cf
#コメントアウトを外す
smtps inet n – n – – smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
5-3. ルックアップテーブルの作成
5-4. 設定に誤りがないかチェック
5-5. Postfixを起動
systemctl start postfix
#自動起動
systemctl enable postfix
6. dovecotをインストール
yum -y install dovecot
#アップデート
yum -y update dovecot
7. dovecotの設定
7-1 .10-mail.confの設定
Maildir形式にする。
cp -p 10-mail.conf 10-mail.conf_backup
vi 10-mail.conf
mail_location = maildir:~/Maildir
7-2. 10-ssl.confの設定
SSLを有効にする。
cp -p 10-ssl.conf 10-ssl.conf_backup
vi 10-ssl.conf
ssl = yes
ssl_cert = /etc/letsencrypt/live/<コモンネーム>/fullchain.pem
ssl_key = /etc/letsencrypt/live/<コモンネーム>/privkey.pem
7-3 .10-master.confの設定
SSLを使わないIMAPを無効化する。
cp -p 10-master 10-master_backup
vi 10-master.conf
#下記を変更する。
inet_listener imap {
port = 0
}
inet_listener imaps {
port = 993
ssl = yes
}
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
7-4 .10-auth.confの設定
認証方式の設定する。
disable_plaintext_auth = no
auth_mechanisms = plain login
7-5. dovecotを起動
systemctl start dovecot
#自動起動
systemctl enable dovecot
8. Postfixのログ設定
mkdir /var/log/mail
#出力先の変更
vi /etc/rsyslog.conf
mail.* -/var/log/mail/maillog
#rsyslog再起動
systemctl restart rsyslog
# ログローテーションの設定
vi /etc/logrotate.d/syslog
/var/log/maillog
#maillogに追記
vi /etc/logrotate.d/maillog
/var/log/mail/maillog {
daily
missingok
dateext
rotate 10 #10日保存
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
#セットされたことを確認
logrotate -dv /etc/logrotate.d/maillog
9. ユーザーを作成する
/var/log/dovecot/dovecot.log {
daily
missingok
dateext
rotate 10 #10日保存
sharedscripts
postrotate
/bin/kill -USR1 `cat /var/run/dovecot/master.pid 2>/dev/null` 2> /dev/null || true
endscript
}
#セットされたことを確認
logrotate -dv /etc/logrotate.d/dovecot
10. ユーザーを作成する
passwd <ユーザー>
11. メールクライアントの設定例
参考サイト
https://qiita.com/inductor/items/f6b05aa43bc11df28928
https://blog.apar.jp/linux/3979/