📮

Proxmoxのpostfixを設定する

2021/11/05に公開

はじめに

  • そもそもproxmoxはdebianなので普通にpostfixを設定すればいい。

背景

  • Proxmoxをインストールしたあとのpostfixの設定が素朴すぎて、日本ではおそらくメールが飛ばない(SMTPを素朴に使うため、OP25B にひっかかる)

解決方法

sendgridにメールを中継してもらうように設定します。

手順

sendgridのアカウントを作る

英語 https://sendgrid.com/
日本語 https://sendgrid.kke.co.jp/ (もしかすると、こちらで登録するとアカウントができるまで数日かかるかもしれない)

※ちなみにどちらで作っても同じ結果になるはず。

アカウント作成〜ログインまでは省略。

API Keyを作成する

  • ログイン後、左枠の Setting -> API Keys をクリック
  • 右上の Create API Keyボタンをクリック
  • 右枠の API Key Name に好きな名前を入れる。例えば Proxmox とか。
  • 名前の下の Restricted Access を選択
  • 権限一覧の Mail Send をクリック、展開された項目内の Mail Send の右にあるスライダーを一番右にする(この項目は ON OFF の2段階しかない)
  • 右枠を下にスクロールして、 Create and View Keyボタン をクリック
  • 画面が切り替わって API Key が表示されるのでこの画面をそのままにしておく。表示されている通り、この API Key は二度と表示できない。(が、失くしちゃったらもう一度この手順で作れば良いので面倒くさい以外の問題はない)

Postfixの設定

https://sendgrid.kke.co.jp/docs/Integrate/Mail_Servers/postfix.html
日本語で説明してくれているので上記の手順を踏むだけ。

  • Proxmoxにシェルでログインする。 (SSHでつなぐか、Proxmox管理画面のShellボタン)

必要なモジュールを入れる

  • apt-get install libsasl2-modules

main.cf

vi /etc/postfix/main.cf

  • 末尾から 6行目くらいにある relayhost = という行の先頭に # をつけてコメントアウト #relayhost =
  • 末尾に以下を挿入
# sendgrid
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_tls_security_level = encrypt
header_size_limit = 4096000
relayhost = [smtp.sendgrid.net]:587

sasl_passwd を作成

このファイルは存在していないので新規作成。

  • touch /etc/postfix/sasl_passwd
  • chmod 600 /etc/postfix/sasl_passwd
  • vi chmod 600 /etc/postfix/sasl_passwd
[smtp.sendgrid.net]:587 apikey:先程画面で表示されたキー

例えば、 [smtp.sendgrid.net]:587 apikey:SG.Ti_nVs_fdjsleybadfErdFEF... のような感じになる。

設定を反映させる

  • postmap /etc/postfix/sasl_passwd
  • systemctl restart postfix

確認

テストメール送信

mail -s testmail <メールアドレス>
testmail
.

コマンドを打った直後、何も表示されない状態になるが、そこで本文を入力する。
上記の例では、 testmail と入力して改行。その後 . だけを入力して改行するとメールが送信される。

メール送信確認

  • mailq
    OK: Mail queue is empty

NG例

root@proxmox:~# mailq
-Queue ID-  --Size-- ----Arrival Time---- -Sender/Recipient-------
43B2E100F17    1399 Mon Nov  1 18:36:56  root@proxmox.local
(SASL authentication failed; cannot authenticate to server smtp.sendgrid.net[13.114.210.107]: no mechanism available)

NGの場合

  • tail /var/log/mail.log

おそらく、以下のどれか

  • apt-get install libsasl2-modules
  • postmap /etc/postfix/sasl_passwd
  • apikeyを入れ間違えた。

リトライ

  • postqueue -f

Discussion