Debian 10 busterを新規インストールして、Postfix+Dovecot+Letsencryptでメールシステムを設定した手順です。Stretchの時の過去記事とだいたい同じ手順ですが、WEBサーバーがOpneLiteSpeedになっているのが違います。このサイトは私の備忘録でもあるのです。
このページの目次
前提
- メールサーバーは mail.def-4.comでの作業例です。
- DNSサーバーにAレコードとMXレコードを設定済み
- ファイアウォールでポート 25, 143, 465, 587, 993, 995の通信許可がされている
- 下記記事の手順通り設定したWEBサーバー(OpenLiteSpeed)
Letsencrypt証明書発行
letsencrypt証明書をWebrootで発行するために、mail.def-4.comをドメイン名としてバーチャルホストを作ります。
まずは、webroot用ディレクトリーを作成します。
cd /usr/local/lsws/WP
mkdir mail.def-4.com
mkdir mail.def-4.com/{conf,html,logs}
chown lsadm:lsadm mail.def-4.com/conf
OpenLiteSpeedのWebAdmin画面(https://[サーバーIP]:7080)を開きます。
VHost Templatesを使うメンバーにmail.def-4.comを登録します。
VHost Templates⇒ テンプレート名「VH001」の文字をクリックします。
Templateタブ⇒ Member Virtual Hosts⇒+ ボタンを押します。
Virtual Host Nameを mail.def-4.com にします。Domain Nameは省略(空欄)で大丈夫です。(Virtual Host Name=Domain Nameの場合)
o
Member Virtual Hosts | |
Virtual Host Name | mail.def-4.com |
Domain Aliases |
保存⇒再起動⇒Dashboardページに戻り、Virtual Hostsにエラーが出ていないか確認します。ロケットマーク(Running)になっていればOKです。
letsencrypt証明書を発行します。以下のコマンドを実行します。
certbot certonly --webroot --webroot-path /usr/local/lsws/WP/mail.def-4.com/html -d mail.def-4.com
証明書の発行に成功すれば、以下のファイルが作成されているので利用します。
- /etc/letsencrypt/live/mail.def-4.com/ cert.pem…サーバ証明書(公開鍵)
- /etc/letsencrypt/live/mail.def-4.com/privkey.pem…秘密鍵
- /etc/letsencrypt/live/mail.def-4.com/ chain.pem…中間証明書
- /etc/letsencrypt/live/mail.def-4.com/fullchain.pem…サーバ証明書と中間証明書が結合されたファイル
ちなみに、証明書ファイルは中間証明書も含む fullchain.pem の方を利用します。Gmailでアカウントを取り込む設定をするならこちらでした。
Dovecot + Postfix インストール
DovecotとPostfixをインストールします。
apt update
apt install dovecot-imapd dovecot-pop3d postfix
Dovecotの設定
dovecotの設定は、/etc/dovecot/conf.d ディレクトリの中の3(+1)ファイルを編集します。
- /etc/dovecot/conf.d/10-master.conf
- /etc/dovecot/conf.d/10-mail.conf
- /etc/dovecot/conf.d/10-ssl.conf
- /etc/dovecot/conf.d/10-auth.conf (旧メールソフトに対応させる場合)
10-master.conf ファイルの編集
nano /etc/dovecot/conf.d/10-master.conf
22-23行目の# を外してIMAPsのポート993を待ち受け状態にします。19行目のIMAPポート143はデフォルトで有効になっているので# はそのままで大丈夫です。
service imap-login {
inet_listener imap {
#port = 143
}
inet_listener imaps {
port = 993
ssl = yes
}
43-44行目の# を外してPOP3sのポート995を待ち受け状態にします。
service pop3-login {
inet_listener pop3 {
#port = 110
}
inet_listener pop3s {
port = 995
ssl = yes
}
}
107-108行の# を外して、PostfixのSASL認証と連携させます。
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
mode = 0666
}
10-mail.conf ファイルの編集
nano /etc/dovecot/conf.d/10-mail.conf
Maildir形式に変更します。30行目を# を付けてコメントアウトして31行目を追記します。
#mail_location = mbox:~/mail:INBOX=/var/mail/%u
mail_location = maildir:~/Maildir
10-ssl.conf ファイルの編集
nano /etc/dovecot/conf.d/10-ssl.conf
6行目はデフォルトでSSL=Yesになっているはずなので確認します。
ssl = yes
12-13行目で# を外して、先ほど発行したletsencrypt証明書パスを指定します。
ssl_cert = </etc/letsencrypt/live/mail.def-4.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.def-4.com/privkey.pem
10-auth.conf ファイルの編集
nano /etc/dovecot/conf.d/10-auth.conf
100行目に login を追加してWindows Liveメール、Windowsメール、Outlook Expressなどの旧メールソフトに対応させます。
auth_mechanisms = plain login
Postfixの設定
postfixの設定は/etc/postfix の中の2つのファイルを編集します。
- /etc/postfix/main.cf
- /etc/postfix/master.cf
main.cf ファイルの編集
nano /etc/postfix/main.cf
27-28行目の証明書のパスを発行したLetsencrypt証明書のパスに変更します。
# TLS parameters
smtpd_tls_cert_file=/etc/letsencrypt/live/mail.def-4.com/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/mail.def-4.com/privkey.pem
ファイルの最後に下記を追加します。Maildir形式にするのと(1行目)、Dovecot SASLを利用します。(後半3行)
home_mailbox = Maildir/
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
さらにもうひとつ追加設定として、ポート25をブロックしているISPなどではリレー設定が必要です。暗号化のまま相手にメールを届ける場合にも設定が必要です。
当サーバーでもリレー設定を実施しています。説明すると長くなるので別記事にしています。
master.cf ファイルの編集
nano /etc/postfix/master.cf
ポート465のSMTPsを利用するため、28-38行目の# を外します。
ポート587のsubmissionポートを利用するため、17-27行目の# を外します。
#dnsblog unix - - y - 0 dnsblog
#tlsproxy unix - - y - 0 tlsproxy
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_tls_auth_only=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=
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
smtps inet n - y - - 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=
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
#628 inet n - y - - qmqpd
pickup unix n - y 60 1 pickup
サービス再起動と動作確認
設定が有効になるのはサービス再起動後からです。
/etc/init.d/dovecot restart
/etc/init.d/postfix restart
動作確認
メールクライアントにアカウント設定を入れる前に動作確認をしておきます。
待ち受けポート確認
lsof -i コマンドで各ポートがLISTENになっているか確認します。
lsof -i
*:pop3 (LISTEN) 0t0 TCP
*:pop3s (LISTEN) 0t0 TCP
*:imap2 (LISTEN) 0t0 TCP
*:imaps (LISTEN) 0t0 TCP
*:smtp (LISTEN) 0t0 TCP
*:urd (LISTEN)
telnet 127.0.0.1 25
telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 server.def-4.com ESMTP Postfix (Debian/GNU)
telnetでポート25に接続してみます。Postfixの文字が出ていればOKです。quit と入力して終了します。
Postfixの表示が出ていない場合は何かが間違っています。この場合はCtrl+] (‘む’のキー)を押してqで戻ります。
telnet 127.0.0.1 110
telnet 127.0.0.1 110
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
+OK Dovecot ready.
Dovecot readyの表示が出ていればOKです。
Maildirディレクトリ作成
メール保存をMaildir形式にしたので、Maildirディレクトリを作成します。
既存ユーザーでログインした状態で実行します。
su [user_name]
maildirmake.dovecot ~/Maildir
既存の各ユーザーのホームディレクトリにMaildirフォルダを作ります。
次は、suコマンドでroot権限になって実行します。
maildirmake.dovecot /etc/skel/Maildir
これで今後adduser [user-name] で追加するユーザーはMaildirディレクトリが自動で作られます。
メールクライアントの設定
メールソフトにアカウントを設定して、送受信ができれば設定完了です。
- POP3サーバーの場合、ポート995、SSL/TLSあり、通常のパスワード認証
- IMAPサーバーの場合、ポート993、SSL/TLSあり、通常のパスワード認証
- SMTPサーバーは、ポート465、SSL/TLSあり、通常のパスワード認証