がらくたネット


qmailadmin

qmailadmin

qmail+vpopmailの環境でWebGUIを利用して操作できる便利なツール

自動応答

qmailadminから自動応答設定を行った場合、autoresponderには次の項目が設定される

| autorespond 86400 3 vacation/message Maildir
この引数に注目! 86400秒内に同じ送信元アドレスから3回以上メールが届いた場合にはautoresponderは自動返信しないってこと。

はまる項目なので要注意!

ちなみにこれはautorespond.cに記述されているので変更するにはファイルの該当箇所を修正して コンパイルして…ウグッ…です。

修正

これを記した一番の理由はqmailadminがちゃんと動かないところがあったからだよ…

このソース必要があって読んでみたけど、Cの中で直接HTML文を記述してあるから 見た目を変更するのってかなり大変。

configure

デフォルトでログイン前画面に表示されてるqmailadminのバージョン情報は
configureファイルに設定されている

1651行目
QA_VERSION="1.2.12"

これを変更すると表示バージョン文字列が変わる

autorespond.c

182行目辺りから
addautorespondnow()関数部分で実際に.qmailファイルを作成して中身を書き込んでいる場所
valias_deleteからautorespondのコマンド部分を追加して
valias_insertってのが正しい流れ

 valias_delete (ActionUser, Domain);
 sprintf(TmpBuf, "|%s/autorespond 10000 5 %s/%s/message %s/%s",
   AUTORESPOND_PATH, RealDir, TmpBuf2, RealDir, TmpBuf2);
 valias_insert (ActionUser, Domain, TmpBuf);
 if ( strlen(Newu) > 0 ) {
   sprintf(TmpBuf, "&%s", Newu);
   valias_insert (ActionUser, Domain, TmpBuf);
 }

元の状態だと、最初にvalias_insertが走る
これだと、modautorespondnow()を実行したときに
オーナーメールアドレス部分が逆になってしまう

その下194行目付近
 show_autoresponders(Username, Domain, Mytime);
を
 show_menu(Username, Domain, Mytime);
に変更する

既存環境で.qmail-default以外の.qmailファイルが存在していない場合に
自動応答先を追加すると、追加直後の自動応答先一覧に戻る部分で
メモリ二重開放?が発生している様子
Webブラウザには空白のページが表示されて、更新かけると「既にあるぜ!」と
怒られるのだな、これが。

template.c

253行目辺り
 printf ("       <textarea cols=80 rows=20 name=\"message\">");

case 'F'の中でこの箇所が自動応答を修正する時に表示される
メッセージ本文を入力するテキストエリア
新規作成と比べてめっちゃでかい
適切に修正する

ちなみに新規作成はhtml/add_autorespond.htmlで定義されていて
 <textarea cols="80" rows="10" name="message"></textarea>
ってな具合になっている
倍の行数を取ってるわけだね

alias.c

687行目辺り
 snprintf (SearchUser, sizeof(SearchUser), "%s", ActionUser);

deldotqmailnow()関数の中で転送先を削除したあと、設定されている転送先が
0個じゃなければ転送一覧を出す部分
この行をコメントアウトしておかないと、正常に削除されたあと
一覧表は表示されるものの、検索窓に削除済みアカウント名が
入力されていて一覧表は空になる
まーこれでもある意味ちゃんと消せたと目視できるので
よいっちゃーよいのだが...