Debian 10 busterでPostfix+Dovecot+Letsencryptでメールシステム構築

2019/10/22[公開] 2019/10/28[最終更新]

 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」の文字をクリックします。

作成したテンプレート「VH001」の文字をクリック
作成したテンプレート「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 Namemail.def-4.com
 
Domain Aliases 

保存⇒再起動⇒Dashboardページに戻り、Virtual Hostsにエラーが出ていないか確認します。ロケットマーク(Running)になっていればOKです。

Dashboardで動作確認
Dashboardで動作確認

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
インターネットサイトを選択して<了解>
インターネットサイトを選択して<了解>
postfix2
メールアドレスの@以下を入力して<了解>

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あり、通常のパスワード認証
postfix3
Thunderbirdでのアカウント追加画面

スポンサー リンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です