MTAからサーバレスでメール送信

PHPでメール送信しようとしたが飛ばず
https://shirakawa.weblike.jp/blog-page/2022/03/24…
調べて試した事をメモる。メーラーの様に使うという意味であり、サーバレスというわけではない。

mb_send_mail()実行してもメール飛ばないな、と思ったらPHPはLinuxのメールシステム使ってるか、
そりゃそうか。せっかくだから入れようかと思ったが、DNSやらないといかんか?、Sylpheed(MUA)
みたいに送信する時にメールサーバ指定/基本認証するようにいかんかな。MTAで転送?ダメだなSPAM
判定で拒否されるか。アドレス買ってこないとムリか?
最近のメールサーバ(MTA)なんか普段使わないし、昔のは大昔に試しでsendmail使った。設定忘れた、
思い出す気もない。
linux php メール送信、でググった:
https://qiita.com/phantom1793/items/03c95d0a3634e8…
https://wordpress.ideacompo.com/?p=10067
メール送信 postfixをMUAとして動かす、でググった:
https://fumiyas.github.io/2014/12/13/sendmail.post…
(多分上のヤツと同じことを言っている。やってみるか。しかしPostfixのsendmailコマンドとか、
\ややこしくてググってて勘違いするわ)
https://atmarkit.itmedia.co.jp/bbs/phpBB/viewtopic…
(マズい事にならないように参考にするか。使う時だけrc.postfix_start/stopすればいいか)
postfix sasl_passwd、でググった:
https://sendgrid.kke.co.jp/docs/Integrate/Mail_Ser…
https://qiita.com/hkato/items/e6e58abfc416d2820f4c
(Gmailではできなくなるらしい。一般のGmailもアナウンスは既にあったので、できないかもしれない。
\一時的に基本認証だけでいける設定にするか。2022.05.30まではいける)

$ sudo installpkg /mnt2/slackware64/n/postfix-3.6.4-x86_64-1.txz
$ grep -E ‘bin|lib’ /var/log/packages/postfix-3.6.4-x86_64-1 | sed s@^@/@ | xargs ldd | grep found
(依存libの不足はなかった)
$ls /etc/postfix/main.cf*
/etc/postfix/main.cf /etc/postfix/main.cf.default /etc/postfix/main.cf.proto
(def設定とSlackおすすめ設定?があるようだが、とりあえずSlack設定のままで、設定変更なしで
\やってみる事にした。つまり上のリンクの一番簡単なやつ)
$ sudo elvis /etc/postfix/main.cf
#inet_interface = localhost (defではlocalらしいので変更は必要ない。ローカルホストからのメールだけを受信)
$ sudo elvis /etc/postfix/sasl_passwd
[smtp.gmail.com]:587 <gmail_address>:<password>
$ sudo postmap /etc/postfix/sasl_passwd
$ sudo ifconfig lo 127.0.0.1 netmask 255.0.0.0
$ sudo sh /etc/rc.d/rc.postfix start
$ sendmail hoge@example.com
testhoge
.
(メーラーで受信できた)
$ sudo sh /etc/rc.d/rc.postfix stop

宛先がGmailだと飛ばないなあ。メールログにnot_authorized、まあいいか他のメアドで確認できたし。
relayhost = [smtp.gmail.com]:587
とか追加設定すればGmailも行くかもしれないが、今回はもういいや。先に進もう。

2023.09
その後、https://shirakawa.weblike.jp/blog-page/2022/03/15…
で入れた証明書でrelayできた。Gmail経由ではないが。オレオレ証明書のせいかメアドによっては届か
ない場合もある。SPAM判定された?。
https://qiita.com/hkato/items/e6e58abfc416d2820f4c
https://rin-ka.net/postfix-smtp-tls/
https://qiita.com/jem_3/items/23199dfcb8c1f8b2a3be
relayhost = [smtp.xxx.yyy]:zzz
smtp_tls_wrappermode = yes
smtp_tls_security_level = encrypt
(上の2つを入れないでrelayhostにすると、/var/log/maillogに入れろと出る)
https://serverfault.com/questions/888940/setting-up…
smtp_use_tls = yes
#smtp_tls_CApath = /etc/pki/tls/certs/ca-bundle.crt
smtp_tls_CApath = /etc/httpd/server.crt
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain

 

参考情報:
https://workspaceupdates-ja.googleblog.com/2019/12…
エンドユーザー向けの情報とアドバイス
ユーザー名とパスワードのみで Google アカウントにアクセスするアプリを使用している場合は、より安全な方法に切り替えてメール、カレンダー、連絡先に引き続きアクセスできるように、下のいずれかの対策をお取りください。これらの対策をされない場合、安全性の低いアプリのアクセスが不可になる 2021 年 2 月 16 日以降、ユーザー名とパスワードが正しくない旨のエラー メッセージが表示されるようになります。
メール
Thunderbird またはその他のメール クライアントを使用している場合は、Google アカウントを追加し直して IMAP と OAuth の組み合わせを使用するよう設定します。
https://support.google.com/a/answer/6260879?hl=ja#…
この記事は管理者向けです。
https://support.google.com/accounts/answer/6010255
アカウントを安全に保つため、2022 年 5 月 30 日より、Google は、ユーザー名とパスワードのみで Google アカウントにログインするサードパーティ製のアプリとデバイスについてサポートを終了いたします。
sylpheed gmail 0auth、でググった:
(マズいな、まだ対応してなさそうだ。というか既にSylpheed自体は放置状態?でもなさそうな)
https://atmarkit.itmedia.co.jp/ait/articles/1409/03/news109.html
https://www.nips.ac.jp/~murata/o2popper/ja/
O2PopperはGmailのOAuth2に未対応のメールソフトやシステムの継続利用を可能にする メール中継アプリケーション
(とりあえず、Gmailは転送機能を使って、Sylpheedの対応は先送りするか。数年ぶりにGmailの設定の
棚卸しをやるハメになった)
\
Sylpheed 3.8beta1 リリース(2022/09/14)が OAuth2認証を実装したらしい。2023.09
https://freesoft-100.com/review/soft/sylpheed.html
https://sylpheed.sraoss.jp/ja/news.html
(そのうち試すかな)

2024.03
OAuth2.0を使うには、CLIENT_ID、CLIENT_SECRET、TENANT_ID(O365問合せ,GmailはGoが知ってる)、が必要らしい。
OAuth2.0のCLIENT_IDとは基本認証でのログインIDのことか?
ChatGPT:
OAuth 2.0の CLIENT_ID は、基本認証でのログインIDとは異なるものです。基本認証は、ユーザー名とパスワードを使用してアプリケーションに対して認証する方法ですが、OAuth 2.0は異なる認証プロトコルです。
OAuth 2.0では、アプリケーションが外部サービスに対してアクセスする際に使用されるクライアントIDとクライアントシークレットが必要です。これらは、外部サービスにアプリケーションを登録する際に取得する情報であり、アプリケーション自体を識別するために使用されます。OAuth 2.0を使用する場合、ユーザーはアプリケーションに対してログインする際に、外部サービスによって発行された認可コードを使用します。
したがって、OAuth 2.0の CLIENT_ID は基本認証でのログインIDではなく、アプリケーションが外部サービスに対して認証およびアクセスするための識別子です。
\
OAuth2.0のTENANT_IDとは基本認証でのログインIDのことか?
ChatGPT:
OAuth 2.0の TENANT_ID は、基本認証でのログインIDとも異なります。基本認証でのログインIDは、通常はユーザーのアカウントや組織の特定のIDを指しますが、OAuth 2.0の TENANT_ID は異なる概念です。
TENANT_ID は、Azure Active Directory (Azure AD) におけるテナントの識別子です。Azure ADは、組織内でのアクセス管理や認証を行うためのクラウドベースの ID サービスであり、多くの場合、OAuth 2.0やその他の認証プロトコルで使用されます。
具体的には、Azure ADでアプリケーションを登録する際に、そのアプリケーションが所属するテナントの TENANT_ID を取得します。このテナントIDは、Azure ADの特定のテナント(組織)を識別するために使用されます。したがって、TENANT_ID は基本認証でのログインIDではなく、Azure AD内での組織(テナント)の識別子です。

installまたは展開時のメッセージ:
# postfix (mail transport and submission agent)
# Postfix attempts to be fast, easy to administer, and secure, while at
# the same time being sendmail compatible enough to not upset existing
# users. Thus, the outside has a sendmail-ish flavor, but the inside is
# completely different.
# Homepage: http://www.postfix.org

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です