印刷
カテゴリ: サーバ運用メモ
参照数: 144

Malling List Serverスペック
OS:Debian GNU/Linux 64bit
MTA:Postfix

1.テキスト処理エンジンgawkのインストール

root@sub2:/usr/local/src# wget http://ftp.yz.yamagata-u.ac.jp/pub/GNU/gawk/gawk-5.1.0.tar.gz

root@sub2:/usr/local/src# tar zxvf gawk-5.1.0.tar.gz

root@sub2:/usr/local/src# cd gawk-5.1.0/

root@sub2:/usr/local/src/gawk-5.1.0# ./configure

root@sub2:/usr/local/src/gawk-5.1.0# make

2.スクリプト訂正

root@sub2:/usr/local/src# wget http://www.gabacho-net.jp/tech-note/ml-type2

注:[ ml-type2 ]はgabacho-net.jpさんのスクリプトをお借りしました。

root@sub2:/usr/local/src# vi ml-type2

#!/bin/sh -
/usr/local/bin/gawk '
BEGIN {
getline seq < "/var/mlist/kozu-ml.seq"
close("/var/mlist/kozu-ml.seq")
++seq
print seq > "/var/mlist/kozu-ml.seq"
close("/var/mlist/kozu-ml.seq")
IGNORECASE=1
RS=""
}
NR==1 {
gsub(/\nReturn-Receipt-To:[^\n]*(\n[ \t][^\n]*)*/, "")
gsub(/\nErrors-To:[^\n]*(\n[ \t][^\n]*)*/, "")
gsub(/\nDisposition-Notification-To:[^\n]*(\n[ \t][^\n]*)*/, "")
if (match($0, /\nSubject:(\n?[ \t])*(\[kozu-ml [0-9]+\] *)*Re:/))
gsub(/\nSubject:(\n?[ \t])*((\[kozu-ml [0-9]+\] *)*(Re: *)*)*/, \
"\nSubject: [kozu-ml " seq "] Re: ")
else
gsub(/\nSubject:(\n?[ \t])*(\[ML [0-9]+\] *)*/, \
"\nSubject: [kozu-ml " seq "] ")
print
if (!match($0, /\nSubject:/))
print "Subject: [kozu-ml " seq "] "
if (!match($0, /\nReply-To:/))
print "Reply-To: このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。"
print ""
RS="\n"
next
}
{print}
' | /usr/lib/sendmail -oi -f このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 kozu-ml-outgoing


上のスクリプトをファイル名をここでは「kozu-ml.sh」のように変更する。
そしてエディタを使ってスクリプトの中のML名とドメイン名を自分のml名とドメイン名に置き換える(訂正する)。

/var/mlistというディレクトリを作ってその下に置くと仮定する。別の場所に置く場合は、エイリアス設定をそれに合わせる。スクリプトファイルのモードは、以下のようにする。

chmod 755 kozu-ml.sh

3.アドレスリストファイルを作る
メンバーのアドレスを一行に1個ずつ記述したアドレスリストファイル「kozu-ml.list」を管理者ホームフォルダの下に作成する。たとえば以下のように記述する。削除は"#"でコメントする。

mity
このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。
このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。
このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。

アドレスリストファイルはメーリングリスト管理者がrootにならなくても更新できた方がよいので、その所有者をメーリングリスト管理者にするのがよい。さらに管理者のホームフォルダーに置くのが良いと思う。

4.連番保持ファイルを作る
 連番機能を持つタイプ2、3、4を用いる場合は、以下のようにして連番保持ファイル「kozu-ml.seq」を作成します(タイプ1には必要なし)。

echo 0 > kozu-ml.seq
chown root.nogroup kozu-ml.seq
chmod 664 kozu-ml.seq

スクリプトではここでは、/var/mlistの下と仮定している。別の場所に置く場合は、スクリプトの中の「/var/mlist/kozu-ml.seq」の部分を変更する。
echoコマンドによって連番保持ファイルに文字「0」を入れておくと、メールの連番は1から始まる。メーリングリストを別のサーバから移行した場合は、それまでの最新の連番を入れておけば、その次の番号から始まる。

5.エイリアスを設定する
 /etc/aliasesファイルに以下の行を書き加える。

kozu-ml: "|/var/mlist/kozu-ml.sh"
kozu-ml-outgoing: :include:/home/mity/kozu-ml.list
owner-kozu-ml: mity
kozu-ml-request: owner-kozu-ml
kozu-ml-approval: owner-kozu-ml

ここで、OWNER mityはメーリングリスト管理者のメールアドレスに置き換える。メーリングリストサーバ上のアカウントならば、「@」以降を省略してもかまわない。複数人ならばコンマで区切って並べる。メーリングリスト管理者は、配送エラーが起こった場合の差し戻し先になる。
 /etc/aliasesファイルの編集が終わったら、

newaliases

を実行する。

6.テスト方法
最初はアドレスリストファイルに自分のアドレスだけを入れておいて、メーリングリスト宛に試験メールを送信してみて配送が正しく行われるか確認する。
確認が終わったら、

echo 0 > kozu-ml.seq

のようにして連番を初期値に戻しアドレスリストファイルを整えて運用を開始する。

7.運用
メンバーのアドレスを追加・変更・削除するには、アドレスリストファイルを編集する(その都度newaliasesコマンドを実行する必要はない)。
特定のメンバーへの配送にエラーが起こり一時的に配送を停止したい場合は、そのアドレスを削除せずに行頭に「#」を付けておくのが便利だ。

8.自分だけに返信をもらう方法
人数が多いメーリングリストでは、会合案内に対する出欠の返答や、希望者募集に対する申し込みなどがメンバー全員に流れると受信者にとってわずらわしいことがある。
このような場合、送信者は以下のようにする。
自分のアドレスを指定したReply-Toヘッダを付けて送信する。
受信者が「差出人のみに返信」の操作をすれば、元の送信者だけに返信が行く。