さくらインターネットのレンタルサーバでは、fmlによるメーリングリスト機能を利用できる。サーバのコントロールパネルから送信先のアドレスを編集できたり、設定を変更できたりする…が、使っていて、ちょっと不便なことがあった。それは、メールヘッダの「reply-to」に関する設定をコントロールパネルから変更できないことだ。
ちなみに、デフォルト設定では、メーリングリストを介して配信されるメールの「reply-to」は、メーリングリストのアドレスになっている。つまり、メーリングリストを介したメールに対して返信すると、メーラーが「to」に指定するのはメーリングリストのアドレスになる。
そもそもメーリングリストとは何かを考えれば、そういう仕様でしかたないのかもしれないなぁとは思うが、ただ、単に「1個のメールアドレスで受けたメールを複数のアドレスにコピーして送るもの」としてメーリングリストを使いたいこともある。
そんな用途の場合は、fmlに任せるようなことではないのかもしれない…が、さくらインターネットのレンタルサーバ(少なくともビジネス向けのサービスの方は)のコントロールパネルでは、転送メールを利用するときに、転送先アドレスの指定がCSVでアドレス指定なので複数のアドレスを設定するときにかなり使いづらいという事情がある。…なので、仕方なくfmlにただメールを転送させることにした。
実際に会社の代表アドレスに、メーリングリストを使ってみると、さくらのレンタルサーバ上のfmlを介して届く関係で、reply-toがメーリングリストのアドレスになっている。なので、お問い合わせメールが届いて、それに普通に返信すると、問い合わせてきた人には届かなくて、社内だけに届いてしまう羽目になる。
そんなわけで、もし可能なら、メーリングリストでreply-toの付与を抑止できたらいいなぁと思ったけれど、その辺の設定項目がコントロールパネルになくて困った。さくらのレンタルサーバでは、SSHでログインすることが出来るので、fmlの設定をいじくってみることにした。
fmlのドキュメントなどを読んでみたら、「reply-to」の付与を抑止するには、設定ファイルに
&DEFINE_FIELD_FORCED
って書いてあるのを消せって書いてあったけど、そんなこと書いてなくて…どうしたものかと。なんとなく見てる設定ファイルを間違えているような気がしないでもないけど、なんとなく面倒な気がしたので、とりあえず、fmlが自動的にMLのアドレスを入れたreply-toを付与する前に、reply-toを書いてしまえばいいんじゃないかという…ちょっと邪道っぽい解決策を思いついた。
…というわけで、こんなのを設定ファイルに書き込んでみた。要するに、START_HOOKを利用して、reply-toにアドレスを指定してあるメールがMLに送られたら、改めて、そのメールアドレスをreply-toに入れてメールを配信するし、reply-toを指定していないメールに関しては、メールヘッダーのfromに書いてあるアドレスをreply-toに強引に(汗)入れて配信する…と。
$START_HOOK =q#
if (&GET_HEADER_FIELD_VALUE(‘reply-to’)) {
&DEFINE_FIELD_FORCED(“reply-to”, &GET_HEADER_FIELD_VALUE(‘reply-to’));
}
else {
&DEFINE_FIELD_FORCED(“reply-to”, $From_address);
}
#;
とりあえず、かなり強引なやり方ではあるけれど、reply-toでややこしくなる事態は回避できたような気がする。まぁ、思いつき型の解決策にありがちな、なにかのレアケースでややこしいことになりそうな気もしないけど、、、しばらく様子を見てみようかと。