メーリングリストを作ろう

メーリングリストは基本的に苦手だったので、ニュースグループを利用していました。しかし、小規模や転送機能などを考えるとメーリングリストもいいかな?と思うようになり、きっかけがあったので作ってみました。

利用したプログラム類
OS VineLinux3.1(6.2でもOK)
メールソフト Postfix 2.1.5(postfix-2.8.10-1vl6.i686でもOK)
メーリングリスト fml-4.0_stable_20030419-0vl1(fml-4.0_stable_20040215-2vl5.i386でもOK)

設定(Postfixの設定はできているとします)

  1. apt-get install fml を実行する。
    [root@hoge root]# apt-get install fml
    パッケージリストを読みこんでいます... 完了
    依存情報ツリーを作成しています... 完了
    以下のパッケージが新たにインストールされます:
    fml
    アップグレード: 0 個, 新規インストール: 1 個, 削除: 0 個, 保留: 0 個
    2938kB のアーカイブを取得する必要があります。
    展開後に 10.1MB のディスク容量が追加消費されます。
    取得:1 http://ring.asahi-net.or.jp 3.1/i386/plus fml 4.0_stable_20030419-0vl1 [2938kB]
    2938kB を 7m4s 秒で取得しました (6921B/s)
    変更を適用しています...
    Preparing... ########################################### [100%]
    1:fml ########################################### [100%]
    !!!!!!! CAUTION !!!!!!!
    Be sure to read /home/fml/README-vine.
    And the /home/fml/.fml/system is set as follows:
    FQDN=dns.hoge.nu
    HOSTNAME=hoge.nu
    Please confirm the parameters and edit if you need.
    完了
  2. postfix の main.cfを設定する。
    # vi /etc/postfix/main.cf
    default_privs = nobody これを default_privs = fml に変更
    allow_mail_to_commands = alias,forward,include を追加
    mynetworks に 127.0.0.0/8, が無い場合は追記
    postfix reload で設定内容をサーバに読み込ませる。
  3. メーリングリストを設定する。
    # su - fml
    -bash-2.05b$ ./makefml newml (メーリングリスト名:(例)fml-test)
  4. aliases を設定する。
    /var/spool/ml/fml-test/aliases の 値をaliasに追加する
    #su - root
    #cat /var/spool/ml/fml-test/aliases >> /etc/aliases
  5. aliases を変更する。
    fml-test: :include:/var/spool/ml/fml-test/include
    fml-test-ctl: :include:/var/spool/ml/fml-test/include-ctl
             を
    fml-test: "|/home/fml/fml.pl /var/spool/ml/fml-test " <-必ず最後に1スペースを入れてから「"」で閉じる事
    fml-test-ctl: "|/home/fml/fml.pl /var/spool/ml/fml-test --ctladdr"
  6. aliasesを認識させる
    # newaliases
  7. ユーザを追加する
    #su - fml
    -bash-2.05b$ ./makefml addadmin fml-test-admin 管理者アドレス
    -bash-2.05b$ ./makefml add fml-test-user ユーザアドレス
  8. ユーザを削除する
    #su - fml
    -bash-2.05b$ ./makefml bye fml-test-user ユーザアドレス
  9. メーリングリストを削除する
    #su - fml
    -bash-2.05b$ ./makefml destructml fml-test
※おまけ その1
  makefml を日本語にする方法
  #su - fml
  -bash-2.05b$ vi .bash_profile

  ---- vi .bash_profile の編集内容 ----
  MAKEFML_LANG=euc; export MAKEFML_LANG
  ---- EOF ----

  後は、一度ログアウトして再びfmlユーザにて ./makefml config hogehoge とすれば日本語メニューです

※おまけ その2
  メールの本文に送信者のメールアドレスと件名を記載する方法
  #vi /var/spool/ml/***/config.ph
  ------ config.ph --------
  # $TRAILER_MAILBODY      = "";   <- 1149行目あたり
  
  ----- 以下を追加 ----
  ### メールの操作
  $DISTRIBUTE_START_HOOK = q%
   # Fromにメーリングリスト名を強制登録
   $Envelope{'fh:from:'} = $MAIL_LIST;
   # Relay-toを送信者に。
   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);
   }
   #送信者のアドレスを本文の先頭に。
   require "libMIME.pl";
   require "jcode.pl";
   $DecodeSubject = &DecodeMimeStrings( $Envelope{'h:Subject:'} );
   $Envelope{'Body'} = "From: " . $From_address ."\n" . "Subject= " . $DecodeSubject . "\n\n". $Envelope{'Body'};
  %;
  ------ EOF -------

config.phに下記の内容を追記してもReply-toに送信者は出ます。
でも、Reply-toの表示も無くちょっと明示的ではないので、私は
上記のやり方が好きです。
http://d.hatena.ne.jp/y_fudi/20091108/1257611240から引用しています。
----
# $FORCE_COMMAND_REPLY_TO = $From_address;
$Envelope{'oh:reply-to:'}=1;
http://yuu.nkjm.info/diary/20110731.htmlから引用しています。
----

※おまけ その3
メールの件名を操作してみます。
メーリングリストの名称とメール数をコロン「:」で表示する。
638行目あたり
$SUBJECT_TAG_TYPE       = "[:]";

メール数の桁数を変更する
657行目あたり
$SUBJECT_FORM_LONG_ID    = 4;


2005/05/07 記述
2005/06/29 ユーザ追加/削除の部分を記述
2005/07/31 makefmlを日本語化にする方法(おまけ1)を記述
2005/08/07 メーリングリスト削除を追加
2009/01/21 メールボディに送信者・件名を追記する方法(おまけ2)を記述
2014/04/14 Reply-toを表示する為に(おまけ2)に追記

Let's PC の Topに戻る
ホームページのTopに戻る