fmlでメーリングリストを作ってみる

なぜかportsにないのでfmlプロジェクトのサイトからダウンロードします。8系は開発系なので4系を使用します。

  • インストール先は/opt/ml/fmlとする
  • MLは/opt/ml/spoolに作成する
  • ユーザはfmlとする
  • fmlユーザのホームディレクトリは/opt/mlとする

fmlユーザを追加する

Unixアカウントの追加は自分で行います。
なるべくここで作成した一般ユーザで作業をします。

# adduser
Username: fml
Full name:
Uid (Leave empty for default):
Login group [fml]:
Login group is fml. Invite fml into other groups? []:
Login class [default]:
Shell (sh csh tcsh nologin) [sh]: tcsh
Home directory [/home/fml]: /opt/ml
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]: yes
Lock out the account after creation? [no]:
Username   : fml
Password   : 
Full Name  :
Uid        : 1011
Class      :
Groups     : fml
Home       : /opt/ml
Shell      : /bin/tcsh
Locked     : no
OK? (yes/no): yes
adduser: INFO: Successfully added (fml) to the user database.
Add another user? (yes/no): no
Goodbye!

fmlをダウンロードしてくる

FTPはこちら→ftp.fml.org
(現時点の安定版最新バージョンはfml-4.0-stable-20040215.tar.gzです)

なお、fmlのバージョンはFreeBSDの開発ツリーに似ています。

  • release - リリース版
  • stable - リリース版+バグ修正
  • current - 開発版

まぁ普通はstableですね。

fmlをインストールする

fml用に追加した一般ユーザで行います。

/usr/local/src # fetch <ファイルパス>
ここで一般ユーザにsuする
% make install
DOMAIN NAME               [example.com]
FQDN                      [server.example.com] mail.example.com
EXEC FILES DIRECTORY      [/usr/local/fml] /opt/ml/fml
TOP LEVEL ML DIRECTORY    [/var/spool/ml] /opt/ml/spool

Postfixの設定を変更する

以下設定を追加します。
もちろんrootです。

# vi /usr/local/etc/postfix/main.cf
+ allow_mail_to_commands = alias,forward,include
# /usr/local/etc/rc.d/postfix reload

新規メーリングリストを作成する

% /opt/ml/fml/makefml newml hoge

メールアドレスを追加する

% makefml add  <メールアドレス>

Postfixエイリアスに追加する

Postfix用のnewaliasコマンドを使います。
シンボリックリンクを張ってある等環境によってはnewaliasesでいけるかも。

# cd /usr/local/etc/postfix
# cat /opt/ml/spool/hoge/aliases >> aliases
# postalias aliases

尚、ML管理系のメールはfml宛に送信されるため、aliasesに既存ユーザへのaliasをしておくといいかもしれません。


以上でMLの作成は完了です。

MLのカスタマイズ

CUIで操作できます。

% makefml config <ML名>
  • メニューの数字で画面遷移
  • 0で戻る

設定ファイル周りのTips

config.phが実際の設定ファイルになっており、makefml configを行った際にもこのファイルが書き変わります。
makefml configよりも詳細な設定をしたい場合は、cfファイルにconfig.phから設定したい変数を抜き出して追加し、makefml update-configします。
cfファイルを修正してからconfig.phを見てみると修正されていることが確認できます。

% makefml update-config <ML名>
作成したMLディレクトリがカレントの場合以下でも可。
% make config.ph

その他Tips

  • Fromを強制的に書き換える

送信元アドレスを知らせたくない場合に使う。
Vodafoneの場合senderに自アドレスを入れてくるのでそれにも対応する。
cfに以下追加

&DEFINE_FIELD_FORCED('from', $MAIL_LIST);
&DEFINE_FIELD_FORCED('sender', $MAIL_LIST);
  • メール末尾に固定メッセージ追加

cfに以下追加

$START_HOOK = q#
        my ($s) = &GET_BUFFER_FROM_FILE("$DIR/info");
        &ENVELOPE_APPEND('Body', &STR2JIS($s));
#;

/opt/ml/fml/infoファイルを新規に作成しメッセージを記述。

  • 件名にタグを付ける

[:<4桁の通し番号>]
タグタイプの設定

% makefml config <ML名>
[5]HEADER CONFIGURATIONS
[1]SUBJECT_TAG_TYPE
[3]Subject: [Elena:00100]    (hml 1.6 compat)

タグフォーマットの設定

% makefml config <ML名>
[5]HEADER CONFIGURATIONS
[2]SUBJECT_TAG_FIGURE
[4]4 e.g. [elena 0001],  [elena 0100],  [elena 10000]
  • 通し番号をリセットする

通し番号を管理しているファイルはseqファイルです。

% echo 0 > /opt/ml/spool/<ML名>/seq