検索条件
タグで絞り込み
fml(3)
全4件
(1/1ページ)
# 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);
}
}
};
# YOU CAN EDIT MANUALLY AFTER HERE.この直後に、目的のスクリプトをコピペします。そしてアップロードして元の場所に戻しましょう。
cd fml/spool/ml/<mailing list><mailing list>のところは、メーリングリストの@から左の部分です。
make config.ph
make config.phとします。これでfmlにさきほどのスクリプトが組み込まれました。
To: ml<mladress@example.com>Aさん、BさんはMLの登録メンバーではありません。
From: Aさん<a-san@example.com>
Reply-to: ml<mladress@example.com>
Cc: Bさん<b-san@example.com>
To: ml<mladress@example.com>となり、肝心のAさんが宛先から抜けてしまう!のです。
Cc: Bさん<b-san@example.com>
To: ml<mladress@example.com>これに全員返信すると、
From: Aさん<a-san@example.com>
Reply-to: Aさん<a-san@example.com>
Cc: Bさん<b-san@example.com>
Tp: Aさん<a-san@example.com>となり、きちんと全員返信の目的を達成できます。
To: ml<mladress@example.com> ※Ccとなるメーラーもある
Cc: Bさん<b-san@example.com>
Tp: Aさん<a-san@example.com>Aさんには、同じ内容のメールが2通届きます。
To: ml<mladress@example.com> ※Ccとなるメーラーもある
Cc: Bさん<b-san@example.com>
① Fromが、MLメンバーの場合には、reply-to はMLアドレスで問題ない。これで、上記の不具合は解決します。※解決策は下記にて。
② Fromが、MLメンバーではない場合には、reply-to は、FromアドレスとMLアドレスを加える*1。
③ ただし、元のメールにreply-to の設定がある場合には、それのみを生かす。
FromをMLアドレスとすることで、DMARCのSPFアライメントを成功させ、DMARC pass とする。DMARCを pass するので、受信確率がぐっと上がります。
From: Aさん <a-san@example.com>なのに
From: tips456のML <ml@tips.net>みたいになるのです。これでは困ります(エックスサーバーはこの仕様なのでビジネスで使いづらい。)。
From: "投稿者の名前_via_ML" <ml@tips.net>また技術上は、例えば X-Original-From として
X-Original-From: (投稿者の表示名とメールアドレス)というぐあいに、投稿者の投稿時のFromを残しておくことは有用です。