tml はメーリングリストツールです。Ruby で実装されています。
tml に対する処理がエラーになった場合(非メンバからの投稿や間違ったコマ ンド等)は、tml がエラーメールを生成するのではなく、tml が異常終了する ため、エラーメールの処理は MTA に任されます。
本プログラムはRubyライセンスに従います。
tmlに関する話題のためのメーリングリストがあります。参加するには、 tml-ctl@tmtm.org 宛に「subscribe」とだけ記述した本文のメールを送ってく ださい。
# useradd tml # mkdir /usr/local/tml /var/spool/tml # chown tml /usr/local/tml /var/spool/tml # su tml % tar xvfz tml-X.X.X.tar.gz % cd tml-X.X.X % ruby ./install
/usr/local/tml/tml.conf を変更して tml の動作を変更することができます。 tml.conf は Ruby スクリプトです。Ruby の文法に従います。
有効なパラメータは以下の通りです。
項目名 | 説明 | デフォルト値 |
---|---|---|
$tml_dir | TMLディレクトリ | インストール時に指定 |
$var_dir | TML情報保持ディレクトリ | "/var/spool/tml" |
$etc_dir | 共通ファイル保持ディレクトリ ("/"で始まっていない場合は$var_dirからの相対パス) | "etc" |
$ml_dir | ML情報保持ディレクトリ (〃) | "ml" |
$deleted_dir | 削除済みML情報ディレクトリ (〃) | "deleted" |
$log_file | ログファイル (〃) | "log" |
$smtp_server | メール配送サーバ | "localhost" |
$smtp_port | メール配送サーバのSMTPポート | "smtp" |
$lock_timeout | ロック獲得を待つ時間(秒) | 300 |
$max_lock_time | 最大ロック保持時間(秒) | 1800 |
$auto_aliases | ML作成/破棄時に自動的に /var/spool/tml/etc/aliases を更新するかどうか | true |
$newaliases | /var/spool/tml/etc/aliases 更新後に実行するコマンド。 postfix の場合は「postalias aliases」コマンドを記述しておけば良いでしょう | nil |
$strip_received | Receivedヘッダを削除するかどうか | false |
$logging | $log_file にログを記録するかどうか | true |
$database | MySQLを使用する場合は "mysql" | nil |
$spool_db | スプールをMySQLに持つ場合は "mysql" | $database |
以下はML毎に設定可能なパラメータのデフォルト値 | ||
$default_not_member | 非メンバからの投稿が可能かどうか | false |
$default_subject_mlname | サブジェクトにML名を付加するかどうか | true |
$default_counter_width | サブジェクトに付加するカウンタの桁数 | 5 |
$default_remote_command | メールでのコマンドを許可するかどうか | false |
$default_remote_admin | メールでの管理者コマンドを許可するかどうか | false |
$default_spool | メールを保存するかどうか | true |
$default_need_confirm_command | コマンド実行前に確認メールを送るコマンド一覧 | "subscribe,admin" |
$default_allowed_command | メールでユーザが実行できるコマンド | "all" |
$default_anonymous_command | メールで非メンバが実行できるコマンド | "subscribe,confirm" |
$default_admin_command | メールで管理者が実行できるコマンド | "all" |
$default_logging | ML毎のログを記録するかどうか | true |
$default_replyto_type | Reply-To へッダの付加方法 | "ml" |
以下は $database="mysql" 時に必要なパラメータ | ||
$mysql_server | MySQLサーバ名 | nil |
$mysql_user | MySQL接続ユーザ名 | nil |
$mysql_passwd | MySQL接続パスワード | nil |
$mysql_db | MySQLデータベース名 | nil |
MySQLを使用する場合は、tml 用のデータベースを作成し、mysql.sql ファイ ル中のテーブルを作成し、tml.conf 中に $database, $mysql_server, $mysql_user, $mysql_pass, $mysql_db を設定してください。
例
% mysqladmin -u root -p create tml % mysql -u root -p -e 'grant all on tml.* to tmluser@localhost identified by "tmlpasswd"' % mysql -u tmluser -ptmlpasswd tml < mysql.tml % cat tml.conf ... $database = "mysql" $mysql_server = "localhost" $mysql_user = "tmluser" $mysql_pass = "tmlpasswd" $mysql_db = "tml"
tmladmin を使用して ML の管理を行ないます。
% tmladmin cmd
cmd は次のいずれかです。
コマンド | 説明 |
---|---|
list | MLの一覧を表示します。 |
create mlname admin | MLを作成します。 admin はMLの管理者メールアドレスです。 |
drop mlname | MLを破棄します。 MLのデータ $var_dir/mlname は -mlname-yyyymmddhhmmss にリネームされます。 |
add [--send-mail] mlname addr ... | MLにメールアドレスを追加します。--send-mail オプション指定時は、登録したアドレス宛に welcome メールが送られます。 |
bye [--send-mail] mlname addr ... | MLからメールアドレスを削除します。--send-mail オプション指定時は、登録したアドレス宛に unsubscribe メールが送られます。 |
addml mlname child ... | MLの下に子MLを追加します。 |
byeml mlname child ... | MLの下から子MLを取り除きます。 |
members mlname | MLのメンバ一覧を出力します。 |
allmembers mlname | MLのメンバ一覧を出力します。子MLがある場合は子MLのメンバも出力します。 |
children mlname | MLの子ML一覧を出力します。 |
parents mlname | MLの親ML一覧を出力します。 |
admins mlname | MLの管理者アドレス一覧を出力します。 |
addadmin mlname addr | MLの管理者アドレスを追加します。 |
byeadmin mlname addr | MLの管理者アドレスを削除します。MLには少なくとも一人の管理者が必要です。 |
setattr mlname attr=value ... | MLの属性を設定します。 |
getattr mlname [attr ...] | MLの属性を出力します。属性を指定しない場合は一覧表示します。 |
setcounter mlname number | MLのカウンタを設定します。 |
getcounter mlname | MLの現在のカウンタ値を出力します。 |
setattr,getattr で使用できる属性は次の通りです。
属性名 | 説明 |
---|---|
sender | MLの配信時に使用されるエンベロープ送信者 |
overview | MLの概要 |
not_member | メンバ以外からの利用の可否 |
subject_mlname | SubjectにML名を付加するか否か |
counter_width | カウンタの桁数 |
remote_command | リモートコマンドが有効か否か |
remote_admin | リモート管理コマンドが有効か否か |
spool | メールをスプールするか否か |
need_confirm_command | 実行前に確認が必要なコマンド |
allowed_command | リモートからユーザが実行できるコマンド |
anonymous_command | リモートから非メンバが実行できるコマンド |
admin_command | リモートから管理者が実行できるコマンド |
logging | ログを記録するか否か |
replyto_type | Reply-To へッダの付加方法 "ml":MLアドレス, "admin":管理者アドレス, "from":Fromアドレス, "none":変更しない, それ以外:指定文字列 |
web_interface | Webインタフェースを使用するか否か(*) |
(*)印は現バージョンでは意味がありません。
MLへの配送は /etc/aliases などに次のようなエントリを作成しておけば良い でしょう。
mlname: "|/usr/local/tml/tml mlname" mlname-admin: :include:/var/spool/tml/mlname/admin mlname-ctl: "|/usr/local/tml/tmlctl mlname"
なお、ML作成/破棄時には /var/spool/tml/etc/aliases が自動的に更新されるため、複 数の aliases ファイルが参照可能な MTA の場合は、このファイルも指定して おくのが良いでしょう。この場合は、$newaliases パラメータを設定する必要 があります。たとえば、Postfix の場合は以下のように指定しておけば良いで しょう。
$newaliases = "/usr/sbin/postalias /var/spool/tml/etc/aliases"
コマンドをメール本文に記述し、mlname-ctl 宛に送ることで、MLユー ザがコマンドを実行できます。
コマンド | 説明 |
---|---|
confirm key | コマンド実行の確認 |
subscribe | MLへの参加 |
unsubscribe, bye | MLからの退会 |
members | MLのメンバ一覧 |
summary args | MLの過去メールサブジェクト一覧 |
get args | MLの過去メール取り出し |
end, exit | コマンドの終了 |
admin command | 管理者コマンドの実行。tmladmin に指定するコマンドと同じです。ただし、list,create,drop,addml,byeml は使用できません。また、setattr で admin_command 属性は設定できません。 |
正規表現で参加/投稿メールアドレスを制限することができます。特定のMLに 制限を掛けたい場合は、/var/spool/tml/ML名/access というファイルを作成 します。このファイルが無い場合は、/var/spool/tml/etc/access があれば、 それが参照されます。access ファイルの各行は次の形式で、上から順に評価 されます。
正規表現<TAB>アクセス権
アクセス権は次のいずれかです。
アクセス権 | 説明 |
---|---|
permit | 参加/投稿許可 |
permit_post | 投稿許可 |
permit_subscribe | 参加許可 |
reject | 参加/投稿拒否 |
reject_post | 投稿拒否 |
reject_subscribe | 参加拒否 |
どの行にも適合しない場合は permit が適用されます。
登録時の welcome メールや confirm メール等のメッセージは変更することが できます。デフォルトのメッセージファイルは /usr/local/tml/templates ディ レクトリ配下にあります。ファイルは次のパスの順に検索されます。
ファイル中の %{...} 部分は次のように置き換えられます。
パラメータ名 | 値 | |
---|---|---|
共通 | mlname | ML名 |
adminaddr | 管理者アドレス(mlname-admin@domain) | |
ctladdr | コントロールアドレス(mlname-ctl@domain) | |
from | Fromメールアドレス。通常は sender 属性の値。confirm または admin 時は コントロールアドレス。 | |
to | Toメールアドレス。このメールを送るきっかけとなったメールの送信者。 | |
admin | command | 実行した管理者コマンド |
result | 実行結果 | |
memberlist | list | MLメンバ一覧 |
summary | summary | サマリ |
archive | msg | アーカイブ(Base64エンコードされている) |
confirm | key | 確認用キー |
commands | 実行を試みているコマンド |
Last modified: Tue Jul 6 02:32:17 JST 2004