Outline

Revision as of 2023-08-07 03:46

 
--- parent: ShellScript title: gmailを経由してsendmailでメール送信 date: 2018-11-26 tags: ShellScript, メール送信 --- ここでは, `sendmail`コマンドを利用した, メール送信の方法について説明する. 通常, 25番ポートに対するメール送信には制限があるため, gmailを利用して, サブミッションポートでのメール送信を行った. === # 背景と問題 ____________________ ubuntuなどのターミナル上でメールを送信する際, よく使うコマンドとして`sendmail`があります. `sendmail`は, メール転送エージェント(MTA: Mail Transfer Agent)と呼ばれるもので, ネットワーク上でメールを転送また配送するソフトウェアです^[mta-url-1]. `sendmail`は標準でメールを送信する際, 送信先のメールサーバのポート25へメールを送ります. ですが, このように直接送信先サーバのポート25に接続することは, 外向き25番ポートのブロック機能(OP25B)の対象になり, 正常に送ることができません. OP25Bとは, TCPの宛先が25番になっているISP外への接続をブロックする機能です^[op25b-url-1]. そこで, ここではサブミッションポートを使用して目的のメールサーバへ送信を行います. つまり, 通常の25番ポートを使用するのではなく, サブミッションポート(587番)を使用してメールを送信します. また, 送信元が送信先に信頼される, 送信履歴が残る点からgmailを経由して送ります. # 解決 ___________________ # gmailの設定 # googleアカウントを作成します # アプリケーションパスワードの生成 [アカウントページ](https://myaccount.google.com/)->"ログインとセキュリティ"->パスワードとログイン方法 ->二段階認証プロセス と行き, 二段階認証を有効にします^[gaccount-setting-url-1]. [もし二段階認証を有効にしないと] ======= 二段階認証を使用しない, つまりgoogleアカウントのパスワードをそのまま後述するアカウント認証ファイルで使用すると, googleから"重大なセキュリティ通知"としてブロックされます. ======= 再度"パスワードとログイン方法"へ行き, "アプリパスワード"からパスワードを生成します. 生成したパスワードは記録しておきます. # sendmailの設定^[conf-setting-url-1] ubuntuを想定しています. # `sendmail`のインストール ```bash sudo apt install sendmail ``` # gmailアカウント認証ファイルの作成 ```bash sudo mkdir /etc/mail/authinfo/ cd /etc/mail/authinfo/ sudo touch gmail-auth ``` `gmail-auth`に以下を書きます. ```bash AuthInfo: "U:root" "I:YOUR GMAIL EMAIL ADDRESS" "P:YOUR PASSWORD" ``` "YOUR GMAIL EMAIL ADDRESS"には, gmailのアカウント(メールアドレス)を, "YOUR PASSWORD"には, 生成したアプリパスワードに置き換えます. 最後に, ハッシュマップを作成します. ```bash sudo makemap hash gmail-auth < gmail-auth ``` # 設定ファイルの変更と反映 # ディレクトリの移動 ```bash cd /etc/mail ``` [変更の前にバックアップを::CAUTION] ============================ 以下から設定ファイルを変更していきますが, 前の状態に戻せるように, バックアップを取ることをお勧めします. ```bash sudo cp sendmail.mc sendmail.mc.1 ``` ============================ # 変更 以下のコードを`sendmail.mc`にある**一番初めにでるMAILER definitionの行の上**に加えます. ```bash define(`SMART_HOST',`[smtp.gmail.com]')dnl define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl define(`ESMTP_MAILER_ARGS', `TCP $h 587')dnl define(`confAUTH_OPTIONS', `A p')dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl FEATURE(`authinfo',`hash -o /etc/mail/authinfo/gmail-auth.db')dnl ``` # 反映 以上の設定を反映します. ```bash sudo make -C /etc/mail ``` sendmailサービスをリロードします. ```bash sudo /etc/init.d/sendmail reload ``` ここで, グーグルアカウントのページからアプリパスワードの紐づけがされているようでしたら問題ないでしょう. # 確認 以下のコマンドで動作を確認します. 問題なければ, 終わりです. ```bash sendmail "送り先のメールアドレス" ``` 上のコマンド実行後, 本文を入力. ```bash Subject: Hello Hello there! . ``` `sendmail`のログは, `/var/log/maillog`で確認できます. 無ければ, `/var/log/`以下から"mail"を含むファイルを検索してください. # 参考文献 _____________________ [mta-url-1]: [MTA 【 Mail Transfer Agent 】(accessed: 2018/11/26)](http://e-words.jp/w/MTA.html) [op25b-url-1]: [スパム・メールの送信を制限するOutbound Port 25 Blockingとは (accessed: 2018/11/26)](http://www.atmarkit.co.jp/fwin2k/win2ktips/797op25b/op25b.html) [conf-setting-url-1]: [Configuring Gmail as a Sendmail email relay(accessed: 2018/11/26)](https://linuxconfig.org/configuring-gmail-as-sendmail-email-relay) [gaccount-setting-url-1]: [sendmailコマンドのsmtpサーバの設定 (accessed: 2018/11/26)](http://blue-red.ddo.jp/~ao/wiki/wiki.cgi?page=sendmail%A5%B3%A5%DE%A5%F3%A5%C9%A4%CEsmtp%A5%B5%A1%BC%A5%D0%A4%CE%C0%DF%C4%EA)
Retrieved from "https://contentsviewer.work/Master/ShellScript/SendMail?cmd=history&rev=1691347578"