Postfix インストール手順

Postfixのインストール

 

インストール

環境: Debian 11.1.0 Postfix asl2-bin amd64 2.1.27+dfsg-2.1+deb11u1   postfix amd64 3.5.13-0+deb11u1

参照したサイト https://www.server-world.info/query?os=Debian_11&p=mail&f=1

バイナリーパッケージのインストール #apt -y install postfix sasl2-bin

Postfix Configuration はNo Configuration を選択

参考にしたサイト:

Build Email Server From Scratch on Debian – Basic Postfix Setup 

 

Tips
  • Postfixのパラメーター myorigin について

From: ドメイン名は、myhostname パラメータではなく、Postfix の myorigin パラメータ (別名システム メール名) によって決定されます。

 

  • TelnetでTCPポート25(outbound)がブロックされてるか確認

sudo apt install telnet

sudo apt install telnet
telnet gmail-smtp-in.l.google.com 25
(Type in quit and press Enter to close the connection)

 

  • Postfixで必要になる主なTCPポートは

sudo ufw allow 25,80,110,143,443,587,465,143,993,995/tcp

 

  • TCPポートスキャン

https://www.ipvoid.com/port-scan/

 

  • Postfix のバージョン確認(postconfコマンド)

$ sudo postconf | grep mail_version
mail_version = 3.5.13
milter_macro_v = $mail_name $mail_version

 

  • Postfixのデフォルトサイズの値確認(postconfコマンド)

$ sudo postconf | grep size_limit
body_checks_size_limit = 51200
bounce_size_limit = 50000
header_size_limit = 102400
mailbox_size_limit = 51200000
message_size_limit = 10240000

 

  • postfix[2199]: fatal: bad string length 0 < 1: html_directory = のエラー

main.cf で html_directory = no

 

  • dovecotでユーザ認証ができない場合

デフォルトがユーザーID500 以上です。/etc/dovecot/conf.d/10-mail.confにて確認しましょう。

# Valid UID range for users, defaults to 500 and above. 
# be done even if first_valid_uid is set to 0.
first_valid_uid = 600
#last_valid_uid = 0

dovecotのステータスの確認  sudo journalctl -eu dovecot

ログの確認 /var/log/mail.log

ログにも記録がない場合はdovecotのジャーナルを確認  sudo journalctl -eu dovecot

 

  • dovecotでメールボックスを使えるユーザ一覧表示

sudo doveadm user '*'

 

  • dovecotを自動的にリスタートさせる

新規にディレクトリを作成 sudo mkdir -p /etc/systemd/system/dovecot.service.d/

以下のリスタート設定ファイルを作成(dovecotが停止後5秒後に自動的にdovecotを再起動)

sudo nano /etc/systemd/system/dovecot.service.d/restart.conf
[Service]
Restart=always
RestartSec=5s

デーモンを再起動 sudo systemctl daemon-reload

動作検証 dovecotを強制停止 sudo pkill dovecot  その後ステータス確認 systemctl status dovecot

 

  • 電子メールとSMTPサーバーの設定を確認

email checker で確認します。 https://network-tools.com/email-tests/

 

  • Virtualドメインの設定

/etc/postfix/main.cf に以下の行を追加

virtual_alias_maps = hash:/etc/postfix/virtual

mydomain  mydestination に指定したドメインを virtual_alias_domains に含めない、メール配送先ユーザーアカウントが存在することが条件です。

/etc/postfix/virtual に以下の内容を記載
# Virtual Domains
hogehoge.jp     virtual
# Virtual alias
noreplay@hogehoge.jp      user1
webmaster@hogehoge.jp    user2

# postmap /etc/postfix/virtual

ハッシュ化された中身を見る場合は  # strings /etc/postfix/virtual.db

 

  • Apacheのデフォルトドメインを停止する(仮想ドメインを使う場合)

他の仮想ホストに干渉する可能性があるため、デフォルトの仮想ホストを無効にします。

sudo a2dissite 000-default.conf

 

  • CertbotコマンドでLetsencryptの証明書を取得(Apacheの場合)

$ sudo certbot certonly -a apache --agree-tos --no-eff-email --staple-ocsp --email 名前@gmail.com -d mail.ドメイン名.biz
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Account registered.
Requesting a certificate for mail.ドメイン名.biz
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/mail.ドメイン名.biz/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/mail.ドメイン名.biz/privkey.pem

  • CertbotコマンドでLetsencryptの証明書を取得(Nginxの場合)

$ sudo certbot certonly -a nginx --agree-tos --no-eff-email --staple-ocsp --email 名前@gmail.com -d mail.ドメイン名.biz
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Account registered.
Requesting a certificate for mail.ドメイン名.biz
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/mail.ドメイン名.biz/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/mail.ドメイン名.biz/privkey.pem

 

  • Certbotの証明書再発行を自動化

crontabに毎日certbot renew を実行し、postfixとdovecot を再起動、Apacheの場合

sudo crontab -e
@daily certbot renew --quiet && systemctl reload postfix dovecot apache2

Nginxの場合

sudo crontab -e
@daily certbot renew --quiet && systemctl reload postfix dovecot nginx

 

  • PostfixとDovecotで複数のドメインの証明書を設定

一つのTLS証明書で複数のドメインの証明書をまとめる場合

TLS証明書を取得 Apacheの場合

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp -d mail.ドメイン1.com,mail.ドメイン2.com --cert-name mail.ドメイン1.com --email you@example.com

TLS証明書を取得 Nginxの場合

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp -d mail.ドメイン1.com,mail.ドメイン2.com --cert-name mail.ドメイン1.com --email you@example.com

Certbotで既存の証明書を更新して新しいドメインを含めるかどうかを尋ねられたら、U (Update)と答えて Enter キーを押します。

※ 上記のコマンドでは、最初のメール ドメイン1を使用して証明書名を指定したことに注意してください。これはファイル パスで使用されるため、Postfix または Dovecot 構成ファイルでファイル パスを変更する必要はありません。

sudo systemctl reload apache2
sudo systemctl reload nginx 
sudo systemctl reload postfix dovecot

 

各ドメインごとでTLS証明書を取得して設定する場合(複数のTLS証明書)

この設定はまだ動作未検証です!

次のコマンドを使用するだけで、2 番目のメール ドメイン用の別の TLS 証明書を取得できます。

Apacheの場合 sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp -d mail.ドメイン2.com

Nginxの場合 sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp -d mail.ドメイン2.com

1. Postfixの設定(Postfixバージョン3.4以上)

sudo nano /etc/postfix/main.cf

最後に以下の行を追加

tls_server_sni_maps = hash:/etc/postfix/sni_maps

sudo nano /etc/postfix/sni_maps

mail.ドメイン1.com   /etc/letsencrypt/live/mail.ドメイン1.com/privkey.pem    /etc/letsencrypt/live/mail.ドメイン1.com/fullchain.pem
mail.ドメイン2.com   /etc/letsencrypt/live/mail.ドメイン2.com/privkey.pem     /etc/letsencrypt/live/mail.ドメイン2.com/fullchain.pem

※ 最初のドメインの証明書が /etc/postfix/main.cf ファイルで既に使用されている場合は、それを sni_maps ファイルに再度含める必要はありません。

sudo postmap -F /etc/postfix/sni_maps

sudo systemctl restart postfix

2. Dovecotの設定

sudo nano /etc/dovecot/conf.d/10-ssl.conf

既存の以下の行を変更します。

ssl_cert =</etc/letsencrypt/live/mail.ドメイン1.com/fullchain.pem 
ssl_key =</etc/letsencrypt/live/mail.ドメイン1.com/privkey.pem

次のように変更します。

local_name mail.ドメイン1.com {
ssl_cert =</etc/letsencrypt/live/mail.ドメイン1.com/fullchain.pem
ssl_key =</etc/letsencrypt/live/mail.ドメイン1.com/privkey.pem
}
local_name mail.ドメイン2.com {
ssl_cert =</etc/letsencrypt/live/mail.ドメイン2.com/fullchain.pem
ssl_key =</etc/letsencrypt/live/mail.ドメイン2.com/privkey.pem
}

sudo systemctl restart dovecot

 

  • マイクロソフト社のOutlookをメールソフトとして使う場合のSMTPサブミッションサービスの設定(master.cf)

一般的な設定とOutlook用を追加します。 sudo vim /etc/postfix/master.cf

一般的な設定

submission     inet     n    -    y    -    -    smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_tls_wrappermode=no
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
  -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth

Outlook用の設定

smtps     inet  n       -       y       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
  -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth

 

  • メールサイズとメールボックス容量の設定

message_size_limit = 20480000
メッセージサイズを20MBに変更
mailbox_size_limit = 0
メールボックス容量を無制限に。message_size_limit を変更する場合、mailbox_size_limit を超えないようにしないといけない。
message_size_limit が mailbox_size_limit より大きい場合、メールが一切受信できなくなる。
mailbox_size_limit のデフォルトは51200000(50MB)。

 

 

 

タグ: 

オープンソースソフトウェア: