2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

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’;

 

以上

コメント