2025/10/06(月)改変MLのテスト方法

Reply-to,From改変のテスト

1. MLメンバーから投稿。Fromの表示名は、"漢字名"

MLから配信されたメールが以下のようになっているか。
reply-to は、MLアドレスのみ、となっているか。
From表示名は、漢字名_via_ML となっているか。
Fromのメールアドレスは、MLとなっているか。
MLドメインのSPF pass, DmarcのSPFアライメントはpassしているか。
2. MLメンバー外のアドレスから投稿。Fromの表示名は任意だが漢字が望ましい
reply-to は、投稿者のアドレス+MLアドレス、となっているか。
From表示名は、投稿者名_via_ML となっているか。
Fromのメールアドレスは、MLとなっているか。
MLドメインのSPF pass, DmarcのSPFアライメントはpassしているか。
(reply-to は投稿者アドレスのみでも可)

3. 管理者アドレスにバウンスメール(エラーメール)が届いているか

届いていなければOK、届いていれば、対処をしましょう。

2025/10/05(日)From書換をするとARCチェーンが切れる問題

さくらインターネットのメーリングリストでFrom書換をすると、ARCの信頼チェーンはfailします。
これは一見、Gmailに受信させるためには不利なようにみえますが、そもそもFrom書換しようというのは、DMARCアライメントを通過させるためです。

Gmailでは、

DMARC pass > ARC信頼チェーン情報

なので、ARCチェーンを崩してでも、DMARCをpassさせたほうが、Gmailでの受信には有利になる、ということとなります。

いずれARCが、受信サイドに効くようになれば、対策は見直す必要があるかもしれませんが、現状(2025/10時点)はARCチェーンを捨ててでも、From書換をしたほうがよいと思います。

2025/10/05(日)ビジネスでのメーリングリスト管理 tips-Gmail 転送バウンス問題対応

それでもGmailからバウンスメール(エラーメール)が届いてしまう。。

Gmail、yahoo、ドコモ、AUなどは、受信メールを厳しく選別しています。

本サイトに記載あるような、From書換をしても、メンバーが使っているGmailからバウンスメールがML管理者に届く場合があります。
それは、メンバーのメールアドレスからその方が使っているGmailに転送している場合です。

このGmailアドレスが、MLメンバーになっていればこのような事象は発生しません。
MLメンバーになっているのは、その方の外部への公開用メールアドレスで、実際には(MLメンバーではない)Gmailアドレスに転送して運用している場合です。
かつ、Gmail側で、POP取得していない場合です(単純転送を受けている場合)。

このメンバーの転送するサーバーがARC,SRSに対応していればまだ、Gmailがキャッチする確率が上がりますが、転送に対して無対策なサーバーも多くあります。

その対策です。

A) Gmail側でのPOP受信

そのメンバーの方にGmail側でPOP受信してもらう方法です。

ただし、この方法には技術上ではなく、ビジネス上の問題があります。

① その人に、技術的指導をしなければならない
② POP受信は、リアルタイム送信に比べGmail到達に時間がかかるので、その人のストレスになる場合がある。

①は、その人に、一定のITリテラシーが必要ですが、ビジネスでは優秀な人も、IT関係はさっぱり知識がないこともあります(だから単純転送しているという背景もあるでしょう)。POP受信って何?みたいな人に指導するのもしんどい場合があるでしょう。

②は、ビジネスのレスポンスにもろに影響してきます。GmailはPOP受信の間隔は、その人のメール到達量などから自動調節し、その人がメールを受ける量が多い時間帯は細かく受信し、そうでもない時間は間隔をあけているようです。なので、どうしても、Gmailへの到達が単純な転送受けに比して遅くなります。

ビジネス上、クイックレスポンスが求められている場合には致命傷になりかず、そうなる指導をメンバーにしてよいか、というビジネスジャッジも必要となります。
もちろん、GmailのPOP受信も 設定画面から「今すぐ受信する」を選択すればGmailのフェッチ間隔にとらわれずPOP受信することは可能ですが、そもそもITリテラシーが低いかもしれない人にそれを望むのは酷というものです。

IT的な正解が、ビジネス的な正解とは限らないということです。

B) その受信者が使っている転送サーバーのIPアドレスをMLドメインのSPFに加える

バウンスメールを分析すれば(AIが分析してくれます)、その人が使っている転送サーバーのIPアドレスを知ることができます。
そのIPアドレスをMLドメインのSPFに加えてしまう方法です。

こうすれば、当該転送サーバーIPアドレスは、MLドメインにとっての正当な発信者とみなされるので、SPFはpassします。
そして、FromアドレスをMLアドレスになるようにしておければ、DMARCのSPFアライメントもpass します。

この方式の欠点は、MLドメインのSPFに記載するIPアドレスが多くなり、あとで見返した時に、「あれっ、このIPアドレスって何のプロジェクトの時のやつだっけ?」ということになりがちなので、きちんとSPFに記載するIPアドレスを管理しておく必要があります。当該プロジェクトが終了したら、今回のIPアドレスはSPFから忘れずにはずように気を付ける必要があります。

メリットは、その転送者(受信者-MLメンバー)に、技術的指導を一切する必要がないということです。
管理者側の作業で完結するので、受信者側の手を煩わせる必要はありません。

A,B選択は状況次第

A式か、B式かはどちらかを対策すれば大丈夫ですので、総合的に判断しましょう

2025/10/05(日)Gmailにも届くメーリングリスト-さくらインターネット

簡便法、Gmailにも届くさくらインターネットのメーリングリストの改良スクリプト

さくらインターネットMLでFromを書き換えてSPFalignmentを成功させる で紹介したスクリプトは複雑で怖い、という方向け、最小限のFrom書換&replt-to 書換スクリプトです。

スクリプトの組み込み方法は、fmlにスクリプトを組み込む方法 をご参照ください。
# YOU CAN EDIT MANUALLY AFTER HERE.
$START_HOOK = q{
# Reply-To header processing
{
    my $rt = &GET_HEADER_FIELD_VALUE('reply-to');
    $rt = '' unless defined $rt;
    
    if (&MailListMemberP($From_address)) {
        unless (length $rt) {
            &DEFINE_FIELD_FORCED("reply-to", $MAIL_LIST);
        }
    } else {
        if (length $rt) {
            &DEFINE_FIELD_FORCED("reply-to", $rt . "," . $MAIL_LIST);
        } else {
            my $fa = defined($From_address) ? $From_address : '';
            &DEFINE_FIELD_FORCED("reply-to", $fa . "," . $MAIL_LIST);
        }
    }
}

# From header rewrite ("<name> via ML:" <MAIL_LIST>)
{
    # 1) read original From safely
    my $orig_from = &GET_HEADER_FIELD_VALUE('from');
    $orig_from = '' unless defined $orig_from;
    
    # 2) keep original From for troubleshooting
    if (length $orig_from) {
        &DEFINE_FIELD_FORCED('x-original-from', $orig_from);
    }
    
    # 3) extract display-name robustly (no warnings even if patterns don't match)
    my $name = '';
    if    ($orig_from =~ /^\s*"([^"]+)"\s*<[^>]+>/) { $name = $1; }
    elsif ($orig_from =~ /^\s*([^<]+?)\s*<[^>]+>/)  { $name = $1; }
    elsif ($orig_from =~ /<([^>]+)>/)               { my $addr = $1; ($name) = split(/\@/, $addr, 2); }
    elsif ($orig_from =~ /([^\s\@]+@[^\s\@]+)/)     { my $addr = $1; ($name) = split(/\@/, $addr, 2); }
    
    # 4) trim; fallback if empty/undef
    $name = '' unless defined $name;
    $name =~ s/^\s+|\s+$//g if length $name;
    $name = 'No Name' unless length $name;
    
    # 5) build new From with " via ML:" suffix
    my $disp = $name . '_via_ML:';
    
    # 6) ensure MAIL_LIST is defined
    my $ml = defined($MAIL_LIST) ? $MAIL_LIST : '';
    
    # 7) create new From header with quotes
    my $new_from = $disp . ' <' . $ml . '>';
    
    # 8) set rewritten From only when ML address is available
    if (length $ml) {
        &DEFINE_FIELD_FORCED('from', $new_from);
    }
}
};

2025/10/04(土)fmlにスクリプトを組み込む方法

メーリングリストfmlのカスタマイズ

さくらインターネットの場合です。

多少、UNIX(Linux)の知識が必要なので、尻込みする人がいるかもですが、たいした操作はしないので、手順とおりやれば大丈夫です。

まず該当のメーリングリストの cfファイル をダウンロードして加工します。
cf ファイル の場所は以下のとおりで、ftpアプリ等でダウンロードしましょう。

/home/<アカウント名>/fml/spool/ml/<メーリングリスト名>

cf ファイルに拡張子はついていないので、テキストエディタで無理矢理開きます。

cfファイルの最後のほうに、以下の記述があります。
# YOU CAN EDIT MANUALLY AFTER HERE.
この直後に、目的のスクリプトをコピペします。そしてアップロードして元の場所に戻しましょう。

※この際、ファイルの中に、日本語でコメントを残さないのが無難です。
※仮に日本語を使う必要があるのであれば、保存文字コードに気を使ってください。UTF-8が無難でしょう。

その後、SSHクライアント*1でサーバーに接続し、以下のコマンドを順に実行します。
(これが Unixのコマンドです。)
cd fml/spool/ml/<mailing list>
make config.ph
<mailing list>のところは、メーリングリストの@から左の部分です。

cdは、change directory のコマンドであり、そのディレクトリ(フォルダ)の場所まで移動するコマンドです。
うまく移動できなければ、lsコマンド*2も利用して、cfファイルがある場所まで到着してください。

そのうえで、
make config.ph
とします。これでfmlにさきほどのスクリプトが組み込まれました。
エラーがでていなければOKです。

動作確認をしてみましょう。
makeしてから反映までしばらく時間がかかることもあるようです。
参考にさせていただいたサイト
さくらインターネットでメーリングリストを開設したら最初にするべきこと
さくらメーリングリストにおけるreply-to設定 on fml

*1 : 私はTeraTermを使っています

*2 : そのディレクトリにあるファイル、ディレクトリをリスト出力するコマンド