自宅のサーバで、Postfixメールサーバの環境でメーリングリストサーバを立ち上げた。メーリングリストエンジンには、fmlを使用したので、Postfix環境でのfml(バージョン4.x系)のセットアップ方法を書いてみた。ただし、Postfixのセットアップは既にされている環境として説明する。fmlは、tarボール版をセットアップした。
1. fmlの入手方法
fmlの入手は、 ここ でおこなう。
2. fmlユーザの登録
fmlをセットアップするには、必ずfmlユーザ、fmlグループを最高権限とする。したがって、rootから
Linuxの場合、
# groupadd fml
# useradd -g fml -d /home/fml -m fml
FreeBSDの場合、
# /stand/sysinstall
メニューでユーザとグループを登録する。
3.fmlディレクトリの作成
fmlのディレクトリとメーリングリストディレクトリを作成する。rootから、
# mkdir /usr/local/fml
# chown fml.fml /usr/local/fml
# chmod 755 /usr/local/fml
# mkdir /var/spool/ml
# chown fml.fml /var/spool/ml
# chmod 755 /var/spool/ml
4.インストール
tarボールのソースを解凍してインストールする。su -でfmlに切り替えてから、
# su – fml
$ tar -zxvf fml-***-***.tar.gz
$ cd fml-***-***
$ perl makefml install
省略
DOMAIN NAME [hogehoge.com] mail.hogehoge.com リターン
FQDN [mail1.hogehoge.com] mail1.mail.hogehoge.com リターン
EXEC FILES DIRECTORY [/usr/local/fml] リターン
TOP LEVEL ML CIRECTORY [/var/spool/ml] リターン
Language (Japanese or English) [English] Japanese リターン
TimeZone (TZ: e.g +900, -0300) [+900] リターン
省略
エラーが無ければインストール完了。
5.Postfixのmain.cfへの追加点
デフォルトでは :include: が使えないので /etc/postfix/main.cf を次のように変更する。これで :include: 命令が有効になる。main.cfへ一行定義を追加する。rootから、
# cd /etc/postfix
# vi main.cf
省略
allow_mail_to_commands = alias,forward,include
main.cfの最後に、この記述を、追加しないとPostfix環境でfmlは使えない。
6.各ディレクトリの説明
● /usr/local/fml
fmlの本体及びライブラリを収容。
● /usr/local/fml/.fml
インストール時の基本設定が保存される。
● /usr/local/fml/bin
メーリングリストのテスト用スクリプトを収容。
● /usr/local/fml/doc
fmlのドキュメント関係収容。
● /usr/local/fml/drafts
メーリングリストを作成した時に自動的に作られる。
ドキュメントのひな型が収容されている。
● /usr/local/fml/etc
各種ファイルのひな型が収容されている。
● /usr/local/fml/libexec
POP管理で使うスクリプト及び他のメーリングリストエンジンの互換用I/F収容。
● /usr/local/fml/messages
エラー時に返す文字列の収容。
● /usr/local/fml/sbin
fmlインストール時に使われるスクリプトファイル収容。
● /usr/local/fml/sys
OSに依存するファイルが、OS別に収容。
● /var/spool/etc
この中には、マシン共通のメーリングリスト設定ファイルが収容。
7.メーリングリストの作成
FMLの実行ファイルの在処へパスを通す。
$ vi .bash_profile
PATH=”$PATH”:$PATH:$HOME/bin:/usr/local/fml
export http_proxy=”http://proxy:3128/” ←プロキシを使ってる場合のみ
export ftp_proxy=”http://proxy:3128/” ←プロキシを使ってる場合のみ
LANG=C
export PATH
export LANG
unset USERNAME
実際のメーリングリストを作る手順。fmlユーザから、
$ makefml newml < メーリングリスト名 >
省略
目的のメーリングリストが作られる。
8.aliasesファイルの編集
その1)
fmlのaliasesの内容をPostfixのaliasesに登録する。rootから、
# cat /var/spool/ml/< メーリングリスト名 >/aliases
< メーリングリスト名 >: :include:/var/spool/ml/< メーリングリスト名 >/include
< メーリングリスト名 >-ctl: :include:/var/spool/ml/< メーリングリスト名 >/include-ctl
< メーリングリスト名 >-request: < メーリングリスト名 >-admin
< メーリングリスト名 >-admin: fml
owner-< メーリングリスト名 >: fml
owner-< メーリングリスト名 >-ctl: fml
この内容を、/etc/aliasesに追記する。
# vi /etc/aliases
省略
# < メーリングリスト名 >
< メーリングリスト名 >: :include:/var/spool/ml/< メーリングリスト名 >/include
< メーリングリスト名 >-ctl: :include:/var/spool/ml/< メーリングリスト名 >/include-ctl
< メーリングリスト名 >-request: < メーリングリスト名 >-admin
< メーリングリスト名 >-admin: fml
owner-< メーリングリスト名 >: fml
owner-< メーリングリスト名 >-ctl: fml
# cp /etc/aliases /etc/aliases.bak
一応、バックアップする。
# newaliases
aliasesの内容を反映。
その2)
こちらの方が簡単。
# cat /var/spool/ml/< メーリングリスト名 >/aliases >> /etc/aliases
# cp /etc/aliases /etc/aliases.bak
一応、バックアップする。
# newaliases
aliasesの内容を反映。
9.その他
■ メーリングリストの設定
fmlユーザから、
$ makefml config < メーリングリスト名 >
省略
メニューにしたがって設定する。
■ メーリングリストユーザの登録
fmlユーザから、
$ makefml add < メーリングリスト名 > hoge@hogehoge.com
省略
メーリングリストユーザのデータベースは、 /var/spool/ml/< メーリングリスト名 >/members と /var/spool/ml/< メーリングリスト名 >/actives へ同じデータが保存される。
■ メーリングリストユーザの削除
fmlユーザから、
$ makefml bye < メーリングリスト名 > hoge@hogehoge.com
省略
■ メーリングリストアドミンの登録
$ makefml addadmin < メーリングリスト名 > hoge@hogehoge.com
省略
メーリングリストアドミンは、 /var/spool/ml/< メーリングリスト名 >/members-admin へ保存される。
■ メーリングリストアドミンの削除
$ makefml byeadmin < メーリングリスト名 > hoge@hogehoge.com
省略
■ メーリングリストメンバーからのメールの返信をReplyToでは無くFromにしたい
目的のメーリングリストの /var/spool/ml/< メーリングリスト名 >/ のディレクトリのconfig.phを編集追加する。
$ vi config.ph
# $Envelope{‘h:reply-to:’} = $From_address;
# $FORCE_COMMAND_REPLY_TO = $From_address;
$Envelope{‘oh:reply-to:’}=1;
以上で、設定完了。後はテストしてみてください。
注:HOST FQDNとかDMAIN NAMEがちゃんと設定されていないと、REPLY TOなどのアドレスが変になるので注意すること。
■ メーリングリストメンバーからのメールの返信先を固定したい。
目的のメーリングリストの /var/spool/ml/< メーリングリスト名 >/ のディレクトリのconfig.phを編集追加する。
$ vi config.ph
$FORCE_COMMAND_REPLY_TO = “xxxxxxx\@xxxxxxxxxxxxxx.co.jp”;
$Envelope{‘h:Reply-To:’} = $Envelope{‘h:reply-to:’} = “xxxxxxx\@xxxxxxxxxxxxxx.co.jp”;
以上で、設定完了。後はテストしてみてください。
■ 複数のMLで共通のMLを作る
複数のメーリングリストで共通の配信リストを使う。ml-1、ml-2、ml-3の各MLをml-allに共通配信リストを作る。記載事項は、ml-allのcfファイルへ追加する。
fml@ml2:/var/spool/ml/ml-all$ vi cf
省略
$START_HOOK = q#
push (@ACTIVE_LIST,”$DIR/../ml-1/actives”);
push (@ACTIVE_LIST,”$DIR/../ml-2/actives”);
push (@ACTIVE_LIST,”$DIR/../ml-3/actives”);
push (@MEMBER_LIST,”$DIR/../ml-1/members”);
push (@MEMBER_LIST,”$DIR/../ml-2/members”);
push (@MEMBER_LIST,”$DIR/../ml-3/members”);
#;
省略
fml@ml2:/var/spool/ml/ml-all$ makefml update-config ml-all
受信者は、@ACTIVE_LISTで指定されたn個のML全ての受信者となる。投稿可能者は、@MEMBER_LISTで指定されたML全てのメンバーとなる。
■ Reply-toのドメイン名を間違えたので訂正したい
1)ML個別の訂正は、各MLディレクトリに有るcfファイルを編集する。
fml@ml2:/var/spool/ml/ml-all$ vi cf
CFVersion 6.1
LANGUAGE Japanese
MESSAGE_LANGUAGE Japanese
TZone +0900
### DNS
DOMAINNAME ml2.xxxxxxxxx.co.jp ← ここを訂正
FQDN ml2.xxxxxxxxx.co.jp
省略
2)根本的にドメイン名を訂正しないと新しいML作成に影響する。
fml@ml2:/var/spool/ml/ml-all$ cd /usr/local/fml/Configurations
fml@ml2:/usr/local/fml/Configurations$ vi system
$LANGUAGE = ‘Japanese’;
$PERSONAL_OR_GROUP = ‘personal’;
%CPU_TYPE_MANUFACTURER_OS = (
‘ml2.xxxxxxxxx.co.jp’, ‘i586-pc-linux-gnu’,
);
$EXEC_DIR = ‘/usr/local/fml’;
%OS_TYPE = (
‘ml2.xxxxxxxxx.co.jp’, ‘LINUX’,
);
$TZ = ‘+0900’;
$DOMAIN = ‘ml2.xxxxxxxxx.co.jp’; ← ここを訂正
$ML_DIR = ‘/var/spool/ml’;
$FQDN = ‘ml2.xxxxxxxxx.co.jp’;
以上
コメント