PostfixからGmail経由でメールを送信する方法

この記事では「Postfix から Gmail 経由でメール送信する方法」を紹介しています。
macOS には Postfix がインストールされているので、Gmail の情報を登録すれば簡単にメール送信を行うことができます。
XAMPP や MAMP などのローカル環境でもメール送信できるようになるので、設定しておくと便利です。
Gmail の準備
アカウント作成
Gmail アカウントを持っていない方は、こちらからアカウントを作成してメールアドレスを用意してください。
2段階認証の設定
次に「2段階認証プロセス」を有効化します。
*すでに有効化している場合は「アプリパスワードを取得」にお進みください。
以前は2段階認証なしでもメール送信できたのですが、現在は「安全性が低いアプリ」と判定されてしまうため、2段階認証を有効にしておきます。
Gmail にログインして、画面右上のアイコンをクリック→「Googleアカウントを管理」を押します。

左側メニューにある「セキュリティ」を選択します。

「2段階認証プロセス」を押します。

「開始」を押して設定を進めてください。

設定後に「2段階認証プロセス」がオンになっていれば完了です。

アプリパスワードを取得
次にアプリパスワードを取得します。
「アプリパスワード」を選択します。

「アプリを選択」で「その他(名前を入力)」を選択します。

自分で分かりやすい名前を入力して「生成」を押します。

このパスワードは Gmail のログイン情報を登録するときに使うので、この画面を開いておくかパスワードをメモしておいてください。

Postfix の設定
次に Postfix の設定を進めていきます。
ここからは /etc/postfix/ に新しいファイルを作成・編集していきます。
テキストエディタなどで作業することもできますが、ターミナルを使っていきます。
main.cf ファイルの編集
sudo vi /etc/postfix/main.cf と入力して Enter を押します。
sudo は「管理者権限で実行」という意味です。

管理者のパスワードを入力して Enter を押すと、main.cf ファイルが開きます。

一番下までスクロールしたらキーボードの i を押して、入力できるようにします。
i は insert(テキスト挿入)という意味です。

以下のテキストを追加します。
#Gmail Settings
relayhost = smtp.gmail.com:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/gmail_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
smtp_use_tls = yes
追加したらキーボードの esc を押して編集を終了し、:wq と入力して Enter を押します。
esc は escape(エスケープ)、wq は write & quit(書き込んで終了)という意味です。

パスワードファイル作成
次に Gmail ログイン情報のファイルを作成します。
先ほど main.cf に追加したテキストの4行目「gmail_passwd」というファイルを作成します。
*ファイル名は変更しても問題ありませんが、main.cf と一致させてください。
sudo vi /etc/postfix/gmail_passwd と入力して Enter を押します。

キーボードの i を押して編集モードにして
smtp.gmail.com:587 メールアドレス:アプリパスワード
を入力します。* Gmail ログイン時のパスワードではなく、最初に取得したアプリパスワードを使用します。

入力したら esc を押して編集を終了し、「:wq」と入力して Enter を押します。

Finder で /etc/postfix フォルダを開いてみると、gmail_passwd というファイルが作成されていることを確認できます。

パスワードファイル登録
先ほど作成した gmail_passwd からデータベースを作成します。
sudo postmap /etc/postfix/gmail_passwd と入力して Enter を押します。

Finder で /etc/postfix フォルダを開いてみると、gmail_passwd.db というファイルが作成されていることを確認できます。

パスワードファイル削除
gmail_passwd ファイルは必要ないので削除しておきます。
sudo rm /etc/postfix/gmail_passwd と入力して Enter を押します。
rm は remove(削除)という意味です。

Postfix の再起動
ここまでの変更が反映されるように Postfix を再起動しておきます。
sudo postfix reload と入力して Enter を押します。

postfix/postfix-script: fatal: the Postfix mail system is not running と表示された場合は、sudo postfix start と入力して Enter を押します。

メール送信テスト
これで Postfix の設定は完了です。
最後にターミナルからメールを送信してみます。
mail -s 件名 送信先メールアドレス [ENTERを押す]
本文を入力する
. [ENTERを押す]

メールが届いていれば完了です。

メールが届いていない場合は「迷惑メール」フォルダを確認してみてください。
「迷惑メール」フォルダにも届いていない場合は、メールアドレスかアプリパスワードが間違っている可能性があるので、もう一度 gmail_passwd の作成からお試しください。
まとめ
以上で設定は完了です。
MAMP などのローカル環境からも Gmail でメール送信できるようになっているので、ご興味がある方は「PHPで作るお問い合わせフォーム」もぜひお試しください!

パスワード作成のところで、「sudo vi /etc/postfix/gmail_passwd と入力して Enter を押します。」が入力してもcommand not foundになってしまいます。main.cfのファイル名は一致しています。
main.cfのファイル名が一致しているということは、最初の「sudo vi /etc/postfix/main.cf」は実行できたということでしょうか?
もしそうならば command not found(コマンドが見つからない)となることは考えにくいので、ターミナルを再起動して再度「sudo vi /etc/postfix/gmail_passwd 」を実行してみてください。
初めまして。手順通り進めまして、sudo postfix startを押してらfatal: mail system startup failed、訳したら起動失敗と出たのですが原因がわかりません。色々調べたのですが、解決策がわからず困ってます。回答お待ちしております。
お使いのOSは何でしょうか?
macOSの場合は
sudo postfix stop
sudo postfix start
をお試しください。
LinuxやUbuntuなどをお使いの場合はsendmailを再起動すると解決するかもしれません。
参考になれば幸いです🙂
postfix から gmail の smtpサーバーへの送信ができなくて、たどり着きました。
おかげさまで送信できるようになりました。
手順が簡潔に書かれていて、とてもわかりやすかったです。
ありがとうございました!
コメントありがとうございます!
わかりやすかったとお聞きして嬉しい限りです
他のサイトの通りにしてうまくいかなくて、数日悩んでここにたどり着いたら、一発で動かせました!説明がとても分かりやすかったし、解決できてとっても嬉しいです!
ありがとうございます!
とても嬉しいコメントありがとうございます
解決できたとのこと良かったです!
Ubuntu20.04LTS+NetBeans+Gmailで送信成功しました。助かりました。
当サイトを見つけて頂きありがとうございます。
送信できたとのこと良かったです!