2024/08/16(金)メーリングリスト改善/さくらインターネット/Reply-toヘッダ

さくらインターネットのメーリングリストReply-toを改修する

さくらインターネットのML(mailing list メーリングリスト)の困るところ

チームで仕事しているとML(メーリングリスト)をよく使います。
メーリングリストの登録メンバーだけでコミュニケーションとるにはとても便利ですが、「MLメンバー以外の外部からMLにポストがあり、それに返信するとき」に困った問題が起きます。

登録されていない外部からのメールにreply-to ヘッダが設定されていない場合(大抵設定されていない)、MLのアドレスがreply-toに設定されます。

すると、多くのメーラーにおいて*1「全員返信」をすると、肝心のFromヘッダーの人(外部の人)が宛先に入らず、そのFromの人に返信したつもりなのに、宛先入っていない!ということが起きます。

ということで、それの回避策です。

なお、さくらインターネットのレンタルサーバー(私が使っているもの)は、MLのシステムとしてfmlを使っています。
fmlは、日本人開発者の深町 賢一さんが作成したメーリングリストソフトウエアであり、世界中で使われています。
https://www.fml.org/software/fml/
fmlバイブル: fml 4.0対応
不遜にも改修などといっていますが、ただの設定変更です。fmlは完成度の高い、素晴らしいソフトウエアであり、さくらインターネットが使いこなせていないだけです。

*1 : 秀丸メールはとても優秀で回避策がある

さくらインターネットのメーリングリストの改修

fmlの公式サイトfmlバイブル: fml 4.0対応にたくさんのヒントがありますが、ここでは以下の設定とします。
メーリングリストメンバーからの投稿については、reply-toの設定が元メールにあればそれを生かし、なければreply-toに、MLアドレスを設定する。
メンバー以外の外部からの投稿については、reply-toの設定があれば、当該reply-toに、MLアドレス加え、reply-to設定がなければ、当該外部の方(Fromヘッダにあるアドレス)とMLアドレスをreply-toに設定する。
$START_HOOK =q#
if (&MailListMemberP($From_address)) {
unless (&GET_HEADER_FIELD_VALUE('reply-to')) {
&DEFINE_FIELD_FORCED("reply-to", $MAIL_LIST);
}
}
else {
if (&GET_HEADER_FIELD_VALUE('reply-to')) {
&DEFINE_FIELD_FORCED("reply-to", &GET_HEADER_FIELD_VALUE('reply-to').",".$MAIL_LIST);
}else{
&DEFINE_FIELD_FORCED("reply-to", $From_address.",".$MAIL_LIST);
}
}
#;
インデントをTABでやっているので、WEBの表示上、インデントがうまく表現できていませんがご容赦ください。スペースでインデントしようとも思ったのですが、何かとトラブルのもとになるので、上記のようにしています。

スクリプトを組み込む方法

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

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

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

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

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

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

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

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

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

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

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