メールサーバー構築方法「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を使用していインストール
yum -y install certbot

3. 証明書をインストール

certbot certonly –standalone -d <コモンネーム> -m <任意のメールアドレス> –agree-tos
下記のエラーが出たら、httpsを利用しているhttpdを止めてから行うとできます。
Problem binding to port 80: Could not bind to IPv4 or IPv6.
systemctl stop httpd

4. Postfixのインストール

#yumコマンドでインストール
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. ルックアップテーブルの作成

postmap /etc/postfix/access

5-4. 設定に誤りがないかチェック

postfix check

5-5. Postfixを起動

#起動
systemctl start postfix
#自動起動
systemctl enable postfix

6. dovecotをインストール

#yumコマンドでインストール
yum -y install dovecot
#アップデート
yum -y update dovecot

7. dovecotの設定

7-1 .10-mail.confの設定

Maildir形式にする。

cd /etc/dovecot/conf.d/
cp -p 10-mail.conf 10-mail.conf_backup

vi 10-mail.conf

mail_location = maildir:~/Maildir

7-2. 10-ssl.confの設定

SSLを有効にする。

cd /etc/dovecot/conf.d/
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を無効化する。

cd /etc/dovecot/conf.d/
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. ユーザーを作成する

vi /etc/logrotate.d/dovecot

/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. ユーザーを作成する

useradd -s /sbin/nologin <ユーザー>
passwd <ユーザー>

11. メールクライアントの設定例

参考サイト

https://qiita.com/inductor/items/f6b05aa43bc11df28928
https://blog.apar.jp/linux/3979/