フォームメールで生じている問題(解決編)(2024/04/28)

Programs

POST-MAIL でフォーム送信者のメルアドがー部の携帯会社のものである場合、管理者宛のメールが届かない問題。管理者宛メールの送信元メルアドが「お名前.com」で取得したドメインのものになるようプログラムを修正してみた。 管理者のメルアドは webmaster@onthisplanet.net で、もちろん「お名前.com」で取得したドメインのものである。別のメルアドを新規作成するよりも、管理者のメルアドを送信元メルアドにするほうが手っ取り早い。管理者のメルアドは init.cgi の77行目で $cf{mailto} に代入されている。 したがって、postmail.cgi の送信元メルアドに該当する部分を $cf{mailto} に変えればよいと考えた。 まず、postmail.cgi の「送信内容フォーマット開始」部分の353行目を次のように変更した。  $body .= "From: $from\n";  ➔➔➔  $body .= "From: $cf{mailto}\n"; その結果、フォーム送信者のメルアドが携帯会社以外のものでも、管理人宛メールが届かなくなってしまった そこで、今後送信元メルアドを別のものに変更することも考慮して init.cgi の77行目の下に次の行を追加した。  $cf{mailfrom} = 'webmaster@onthisplanet.net'; Return-Path 用に bounce@onthisplanet.net のようなメルアドをさらに追加してもよいが、そこまで凝ることもないだろう。 そして postmail.cgi の353行目を次のように変更した。  $body .= "From: $from\n"  ➔➔➔  $body .= "From: $cf{mailfrom}\n"; さらに「senmdail コマンド」部分の395行目を次のように変更した。  my $scmd = $cf{send_fcmd} ? "$cf{sendmail} -t -i -f $email" : "$cf{sendmail} -t -i";  ➔➔➔  my $scmd = $cf{send_fcmd} ? "$cf{sendmail} -t -i -f $cf{mailfrom}" : "$cf{sendmail} -t -i"; ここを変えない場合、受信はできたが、メールヘッダの で spf=softfail となっていた。 スマホサイトのフォームからテストした結果、パソコンへの管理者宛メールもスマホへの自動返信メールも正常に届いた。Authentication-Results(下)は極めてイノセントで、dmarc=pass、spf=pass となっている。

POST-MAIL 管理者宛メールのヘッダの一部

管理者にしか届かないメールなので、Return-Path、To、From がすべて同じでも不都合はない。 これで約3か月がかりの案件は解決した。

< 前の記事次の記事 >