FreeStyleWiki

Postfixを自サーバで構築

このエントリーをはてなブックマークに追加

[Linux,サーバ管理]

Postfixを自サーバで構築

  メールサーバの設定概要リンク

SPF/DKIM設定までやれば、ThunderbirdでメールサーバにログインしGmailにメールを送ったりできるはす。

  postfix/dovecotの設定のポイント

ほぼメールサーバー構築(Postfix+Dovecot)の通りで設定できるが以下は結構重要。結論から言うと私の環境では不要だった、「saslauthd」を使えばよい。

[[email protected] ~]# vi /etc/sasl2/smtpd.conf ← SMTP認証設定ファイル編集※CentOS7の場合
pwcheck_method: saslauthd
↓
pwcheck_method: auxprop ← 変更

saslauthdだとLinux上の各ユーザのパスワードがメールの認証に使われるので、わかりやすいパスワードは避けるべきだろう。

メールのテスト

ドキュメントではThunderbirdを使用した設定例が載っている。接続できず、デバッグする時はtelnetを使ったほうが良い。

CloudFlareのAPIを使用してLet's Encryptで証明書を取得する方法

certbot-dns-cloudflareというのがあって、CloudFlareで管理しているDNSの証明書をLet's Encryptで取得する場合、証明書の取得処理を自動でできる

以下を参考にさせてもらう

$ which python
~/.pyenv/shims/python
$ python --version
Python 3.6.10

$ pip install certbot-dns-cloudflare
...

pyenvを使っている場合、sudoでPATHを引き継げる必要があるので、以下を実施すること

CloudFlareコンソールでGlobal API Keyをもらう、そしてdns_cloudflare_api_keyに設定する

$ sudo mkdir -pv /etc/letsencrypt
{
  echo dns_cloudflare_email = [email protected]
  echo dns_cloudflare_api_key = ***key***
} | sudo tee /etc/letsencrypt/cloudflare_secret.ini

$ sudo chmod 600 /etc/letsencrypt/cloudflare_secret.ini

ドライラン(-vをつけると詳細が表示される)

$ sudo certbot certonly --dry-run -n --agree-tos --dns-cloudflare \
    --dns-cloudflare-credentials /etc/letsencrypt/cloudflare_secret.ini \
    --dns-cloudflare-propagation-seconds 20                             \
    --email [email protected] -d *.example.com -d example.com -v

うまくいったら、--dry-runを抜いて実行

$ sudo certbot certonly -n --agree-tos --dns-cloudflare \
    --dns-cloudflare-credentials /etc/letsencrypt/cloudflare_secret.ini \
    --dns-cloudflare-propagation-seconds 20                             \
    --email [email protected] -d *.example.com -d example.com -v

うまく動いていれば以下のように表示される

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/example.com/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/example.com/privkey.pem
This certificate expires on YYYY-MM-DD.
These files will be updated when the certificate renews.

取得した証明書をdovecotに設定する際は以下のようにする。"<"は必須。

ssl = yes
# Preferred permissions: root:root 0444
ssl_cert = </etc/ssl/certs/dovecot.pem
# Preferred permissions: root:root 0400
ssl_key = </etc/ssl/private/dovecot.pem

fullchain.pemと書かれている通り、Let's Encryptで取得した証明書は中間証明書を含むので証明書を連結しなくてもよいと思われる。