メールサーバー · 1 min read · Sep 08, 2025
ISPConfig 3で管理されているメールサーバーを有効なLet's Encrypt SSL証明書で保護する

自分のメールサーバーを運営している場合、安全にSSL/TLS接続で接続することがベストプラクティスです。これらの安全な接続には有効な証明書が必要です。このチュートリアルでは、自動的に更新されるメールサーバー用のLet’s Encrypt証明書を設定します。
警告:このチュートリアルは、次のチュートリアルに基づいています:https://www.howtoforge.com/tutorial/securing-ispconfig-3-with-a-free-lets-encrypt-ssl-certificate/ ですが、メールサーバーとコントロールパネル用に別々の証明書を持つように修正されています。以前にそのチュートリアルに従った場合、このチュートリアルは設定を壊す可能性があります。
このチュートリアルでは、acme.shによって発行された証明書を使用します。certbotを使用している場合は、代わりにこのチュートリアルに従ってください:https://www.howtoforge.com/community/threads/securing-your-ispconfig-3-managed-mailserver-with-a-valid-lets-encrypt-ssl-certificate-certbot.86372/
ISPConfig 3.2の注意事項: ISPConfig 3.2は、インストール中にサーバーホスト名用の有効なLet’s Encrypt SSL証明書を自動的に作成でき、これがメールサーバーにも使用されます。サーバーホスト名以外の異なるドメイン名がSSL証明書に必要でない限り、ISPConfig 3.2システムではここに記載されているようにLet’s Encrypt SSL証明書を手動で作成する必要はありません。
前提条件
- サーバーは、OSに対するPerfect Serverチュートリアルに従ってインストールされている必要があります。
- rootユーザーとしてログインしていることを確認してください。
始める
私のメールサーバー用に次のホスト名を使用します:mail.example.com、smtp.example.com、imap.example.com。
このチュートリアル内の赤い下線のホスト名をすべて自分のものに置き換えてください。
ホスト名がサーバーを指すようにDNSレコードを作成します。これらはA(および最終的にはAAAA)レコードである必要があります。その後、ISPConfigインターフェースで、サイトタブに移動します。
証明書の発行
サイトの下で、「新しいウェブサイトを追加」をクリックします。ドメインとしてmail.example.comを設定します。Auto-Subdomainを無効にし、Let’s Encryptのチェックボックスをオンにします。
これが終わったら、エイリアスドメインとして他のホスト名を追加できます。エイリアスドメインリストに移動し、「新しいエイリアスドメインを追加」をクリックします。ドメインとしてsmtp.example.comを選択し、親ウェブサイトとしてmail.example.comを選択します。Auto-Subdomainを無効にし、新しいレコードを保存します。他のホスト名についてもこれを繰り返します。
証明書が正しく配置されていることを確認します。これを行うには、https://www.sslshopper.com/ssl-checker.htmlのようなツールを使用できます。
次のように表示されるはずです:

ホスト名がリストされていて、他にエラーがない場合は、次に進むことができます。そうでない場合は、エラーを確認し、先に進む前に解決してください。
Let’s Encrypt証明書で証明書を置き換える
現在の証明書を信頼できる証明書に置き換えることができます。サーバーにログインし、次のコマンドを実行します:
(mail.example.comをウェブサイトに使用したホスト名に置き換えます)
cd /etc/postfix/
mv smtpd.cert smtpd.cert-$(date +"%y%m%d%H%M%S").bak
mv smtpd.key smtpd.key-$(date +"%y%m%d%H%M%S").bak
ln -s /var/www/mail.example.com/ssl/mail.example.com-le.crt smtpd.cert
ln -s /var/www/mail.example.com/ssl/mail.example.com-le.key smtpd.key
systemctl restart postfix
systemctl restart dovecot証明書は、PostfixおよびDovecotサーバーで使用されるようになります。しかし、まだ終わっていません!Let’s Encrypt証明書は60日ごとに更新されるため、将来的に証明書を置き換えるプロセスを自動化する必要があります。忘れないようにしましょう。
ISPConfig GUIなしのマルチサーバーノード
ISPConfigのマルチサーバーセットアップでGUIのないノードの場合、ISPConfig自体にSSL証明書があるかどうかを確認する必要があります。単一サーバーセットアップやISPConfig GUIを実行しているサーバーではこのステップを行わないでください。
次のlsコマンドでテストできます:
cd /usr/local/ispconfig/interface/ssl/
ls ispserver.crt
ls ispserver.keyすでに証明書がある場合、結果は次のようになります:
root@server:/usr/local/ispconfig/interface/ssl# ls ispserver.crt
ispserver.crt
root@server:/usr/local/ispconfig/interface/ssl# ls ispserver.key
ispserver.keyもし2つのlsコマンドがispserver.crtおよびispserver.keyファイルを返さない場合は、次のようにLet’s Encrypt証明書へのシンボリックリンクを作成します:
ln -s /var/www/mail.example.com/ssl/mail.example.com-le.cer ispserver.crt
ln -s /var/www/mail.example.com/ssl/mail.example.com-le.key ispserver.key自動更新スクリプトの設定
新しいスクリプトファイルを開きます:
nano /usr/local/bin/le_mailserver_restart.shそのファイルに次の内容を貼り付けます:
#!/bin/sh
### BEGIN INIT INFO
# Provides: LE MAILSERVER CERT AUTO UPDATER
# Required-Start: $local_fs $network
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: LE MAILSERVER CERT AUTO UPDATER
# Description: Restart mail server automatically when a new Let's Encrypt certificate is issued.
### END INIT INFO
systemctl restart postfix
systemctl restart dovecotスクリプトを実行可能にします:
chmod +x /usr/local/bin/le_mailserver_restart.sh更新時にこのスクリプトを自動的にトリガーするために、systemdを使用します。
新しいsystemdサービスを作成して開きます:
nano /etc/systemd/system/le-mailserver-restart.serviceそのファイルに次の内容を貼り付けます:
[Unit]
Description="Run script to restart Postfix and Dovecot after the certificate has been renewed"
[Service]
ExecStart=/usr/local/bin/le_mailserver_restart.shこのファイルを保存して閉じます。次に、新しいsystemdパスファイルを作成して開きます:
nano /etc/systemd/system/le-mailserver-restart.pathそのファイルに次の内容を貼り付け、mail.example.comを使用したホスト名に置き換えます:
[Unit]
Description="Monitor the mailserver certificate files to trigger a e-mail services restart after the certificates has been renewed"
[Path]
PathModified=/var/www/mail.example.com/ssl/
Unit=le-mailserver-restart.service
[Install]
WantedBy=multi-user.targetこのファイルを保存して閉じます。次に、サービスを開始し、起動時に実行されるように有効にします:
systemctl start le-mailserver-restart.pathそして、起動時に実行されるように有効にします:
systemctl enable le-mailserver-restart.pathこれで完了です!
動作しない?
以前に、Let’s Encryptがエイリアスドメインの1つをメインドメインとして使用していたため、これに問題がありました。メインドメインは、前述のSSLツールで「共通名」として見つけるか、/root/acme.sh/の内容をリストして、どの(エイリアス)ドメインにフォルダーがあるかを確認できます。
まだ問題が発生している場合は、フォーラムにスレッドを開いて、他の人に助けてもらってください。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。