それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Postfixをxoauth2に対応させ、smtp.gmail.comへリレーする

自宅のデバイスからの通知メール送信。

自宅デバイスから、通知メールを送信するだけでとても大変である。

OP25Bで、SMTPサーバーへリレーする必要があるし、SMTPサーバは認証がある。

さらに、普段に通知で使ってるGoogle アカウントが2FA/OAuth必須になり、パスワードが使えなくなった。

GoogleがアカウントパスワードとSMTP/IMAPパスワードを共通にしているのから問題が起きるのだ、SMTP 専用パスワードを発行してくれと思うのだが、Googleはユーザーを2FAに移行させて、複数アカウントを制限するつもりなのかもしれない。よろしい。ならば抵抗する。

SMTP/IMAP で xoauth2

xoauth2 でユーザーを認証すれば、SMTP/IMAPが使える。

OAuthなので、クライアント識別IDを作り、ユーザーからアクセストークンを貰えば、SMTPにログインすることができる。

Exim4は未対応というか、そんなGoogle独自仕様に対応する時間もリソースもねーよみたいな感じ。PostfixSASLのプラグインを作ってる人がいて、それを使えば対応できるっぽい

postfix に xoauth2を喋らせる。

コード見ながらSASLをmake install するかとおもったら、PPAが用意されていて、拍子抜けだった。

GitHub - tarickb/sasl-xoauth2: SASL plugin for XOAUTH2

PPAなのでUbuntuPostfixを準備して、SASLを入れたらあっさり解決。

sudo add-apt-repository ppa:sasl-xoauth2/stable
sudo apt-get update
sudo apt-get install sasl-xoauth2

OAuthのクライアントIDとアクセストークンは、専用のジェネレーターであっさりと入手が可能だった。

これで、XOAUTH2を使ったSMTPサーバを作ることができ、GMAILにスマートリレーすることができた。

調べれば、あっさりと解決した。

docker にした。

時間が余ったので、あとで色々とインストールしやすいように、Dockerでパッケージ化し、Postfixの環境一式をDockerの中に閉じ込めておいた。

これで、UbuntuがバージョンアップしてもPPA経由でしばらくは動くはずである。

github.com