Kozupon.com    
 
 Postfix DE fml!


自宅のサーバで、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';

 

以上


 
 
 



Copyright 2005 Kozupon.com.