2017年4月23日日曜日

CentOS7でgmailのメール送信しようとしたら二段階認証でつまづいた

※CentOS7でgmailのメール送信の設定自体はすでにゴロゴロあるので書いてないよ。
※要は二段階認証で引っかかった所以外は見所がないよ。

まとめるとタイトルの通りで、googleアカウントに二段階認証がついてると、postfixでの「sasl_passwd」のパスワードが「アカウントのパスワード」ではダメになります。

詳しくは以下の通りです。ちなみに以下のURLで色々辿るとアプリのパスワードが作れます。それで通せます。
二段階認証の場合に必要な追加の作業

下はいつもの通りのブログです。

前回までのあらすじ
引越し先の借屋でインターネット環境がゴミクズそのものだった。
なのでSoftbank Airでネットに接続だ。
・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・
・・・・・・
・・・
ソフバンエアはポート転送ができない。
つまり自宅のサーバーが外部ネットワークに公開できない。
マイクラサーバーが立てられない。色々できない。
一応解決方法はあるみたいだけどめんどいし、
結局VPSは借りないといけないので・・・・・・
・・・・・・
・・・
ConoHaのVPSを借りた。

理由は
最重要:VPSである。
重要:初期費用無し。
重要:最安プランで千円切る。
おまけ:ConoHachanKAWAII

ていうかVPSでさくらに対抗できるのこの子以外見当たらなかった・・・
初期費用0円はすごいし、最安プランでも十分に良い。

とゆーわけで
Redmine立てた。最近のRedmineはコマンド5つ書くだけでいいんだね。
でもRedmineからメール飛ばないと不便だにゃあ。
CentOS7系で、postfixのみでメール送信したーい!
なんか大前提となる知識が圧倒的不足していたのでメモ。

知識
■SMTP
メール送信のプロトコル名です。
要は「こう言う方式で信号が送られてきたらメールと解釈して処理してね」
と言うメール送信時の規約です。
メールを送信・転送するためのプロトコル。受信とかできない。
※メール受信したいなら、POP3とか言うメール受信のプロトコルで動いているソフトウェアを別途で入れてね

■postfix(ポストフィックス)
簡単にいうと:
 メールを送信するためのソフトウェア。受信とかできない。
 本当に送信だけ。でも転送もできるよ。
難しくいうと:
 SMTPサーバーとなるソフトウェア。

■どうやってメールが送られる?
①SMTPに則った信号(要はメール)をネットに垂れ流そうとします。
②メールサーバ(postfix)がメールに乗っている宛先のドメインをDNSに聞きます。
③DNSから帰ってきたIPアドレスの場所に送られます。
要はIPアドレスさえ分かればメール送れる。
一応"@"以降に"[999.999.999.999]"って感じで指定すれば届く。
でもIPアドレスを特定するのは果てしなくめんどいのでやめとこう。


やりたいこと
メールを送信したい。

嫌なことが起きたこと
でもpostfixでテキトーに設定し、
"root@asanes.jp"とかいう感じの架空のアドレスを送信元アドレスにして
gmailに送信すると、1回は受け取ってくれるが
「おめーのメール、送信元のドメインがDNSに無いからスパムな」
と言われ、一定時間gmail側で完全に拒否られた。
1回は届くけど、スパムあんど一定時間完全拒否とかいうコンボ。
まあ当たり前よな。

多分gmail以外でもそんな感じだろうし何よりRedmineで受け取る先は
gmailの予定だからスパム扱いは困る。

要はメールのドメインを取得すればいいんだけど、月100円も嫌です。
ConoHachanは月630円でにゃんにゃんできるからいいけど。

じゃあ、gmail名義で出せばいいじゃない
とゆーわけで自分の持ってるgmailのアドレスでメールを送信します。
送信元のアドレスがDNSにあればいいんだよ!

とゆーわけでgmailのアドレスを送信元のアドレスにするのですが
「承認してねーよ、詐称してんじゃねーよ」
怒られる。そりゃそうだ。

仕方ないので承認しまーす。
sasl_passwdを設定してー。
承認しましたー。

「ユーザーとパスワードがあってねえよ」
はぁ?
いや正しいんですけど間違いなく。どういうことなの。
そういやなんかURLあるなこのログ。

二段階認証の場合に必要な追加の作業

アプリ用のパスワード登録して、それを書いたら通った。
二段階認証おそるべし。