2004.12.25
手動では成功するが、cronだとメールがどうしても拾えないので別手段を講じることにした。
テキストベースのブラウザのw3mの利用です。
以下はその手順
- abcblogのhome directory内に .forwardの名前でファイルを作り以下の内容とした。
¥abcblog
"| /usr/local/bin/w3m -dump http://hogehge/blog/mt/abc/mail-entry.cgi"
- 同様にxyzblogのhome ditrectoryにも作成
- そしてabcblogとxvzblogにメールを出した。
見事に成功した。
メールを受けると直ちに反映されるのもcronで10分毎に処理するよりサーバに負荷も掛からず好都合。
それに、この方法だと何人分でも簡単に作れる。
Blogに携帯電話からのメールでも投稿できるMoblogというのが流行っているそうだ。
そこで我が家のサーバにもmail-entry.cgiというのを入れてMoblogを行うことにした。
我が家のサーバではMovabletype関連ファイルを$Documentroot/blog/mtに置いている。
以下はその手順です。
(1) Blog専用にabcblogとxyzblogのアカウントを作りメールを受けられるようにする。
(2) 2人でBlogのページを設けているので、mtディレクトリー内でmkdir abcとmkdir xyzとして2つのディレクトリーを作りこの中にそれぞれmail-entry.cgi関連のファイルを入れた。
(3) そして、それぞれのmail-entry-config.cgiをBrowserから起動して環境設定を行った。
(4) メールをabcblog宛てに出し/hogehoge/blog/mt/abc/mail-entry.cgiを呼び出す。
Blogにうまく反映できた。 画像添付もちゃんと処理されて現れる。
(5) 次にmail-entry.cgiはcurrent directoryが自分自身のディレクリーでないとうまく起動しないとネットの解説記事に書かれていたので、suしてrootになりメールをabc宛てに出した後にabcディレクトリーに移りmail-entry.cgiを起動してBlogに反映されることを確認した。
ここまではうまく行ったので、いよいよcrontabに登録して自動化する。
0,10,20,30,40,50 * * * * cd /$Documentroot/blog/mt/abc ;
/$Documentroot/blog/mt/abc/mail-entry.cgi 1>/dev/null 2>/dev/null
5,15,25,35,45,55 * * * * cd /$Documentroot/blog/mt/xyz ;
/$Documentroot/blog/mt/xyz/mail-entry.cgi 1>/dev/null 2>/dev/null
あれー、メールを出してcronが動いても「メールがありません。」といわれる。
何度やっても同じだ。
調べたら、どうもmail-entry.cgiがメールを拾えていないようだ。
悪戦苦闘したが、手動なら動くがcronで動かない理由が分からない。
2004.12.15
FreeBSDはDefaultでsendmailがインストールされる。
もう今時はsendmailより新しいpostfixとかqmailなどを使うべきなのかもしれにが、体に染み付いた習慣から抜けられなくて、sendmailをそのまま使うことになっている。
以前はsendmailの設定ファイルであるsendmail.cfを作るのにxxxxx.defなどという設定ファイルの予備ファイルのようなものを作って、sendmail.cf作成用専用コンパイラーでsendmail.cfを作っていた。 が、最近はfreebsd2.mc等と名付けられたmc fileのサンプルがあるので、これをコピーして適当な名前で例えばmycomputer.mcなどと変えて、編集の後makeすればmycomuter.cfが出来上がるのでsendmail.cfに名前を変えて出来あがりとなる。
しかし、大概は最初からあるsendmai.cfで十分で、次に述べるaccessとlocal-host-namesのファイルと他のサーバからの中継を許す場合のみrelay-domainsのファイルを作る。
1.access
cyberspammer.com 550 We don't accept mail from spammers
another.source.of.spam REJECT
okay.cyberspammer.com OK
myhome.mydomain.com RELAY
10.77.14. RELAY
のように記述しrootになって
su-2.05b# makemap hash /etc/mail/access < /etc/mail/access
とすると、access.dbが出来上がる。
2. local-host-names
本来のホスト名と別名でも受けたい場合は次のように2つ書いて置く。
myhome.mydomai.com
another.name.co.jp
3. relay-domains
リレーを許してあげるドメインがあれば、relay-domainsの名前のファイルを
作り許可するドメイン名を列記しておけばよい。
最後に忘れてならないのは/etc/rc.confに
sendmail_enable=”YES”
の一行を追加し、rebootすれば立ち上がる。
1. インストール
Majordomoのインストールは今回portsでmake installで一発で入れた。
手抜きだが便利です。
# cd /usr/ports/mail/majordomo
# make install clean
手動だとMajordomoが使うユーザ名やグループ名を登録したり、sendmail.cfで指定されているsendmailの位置が/usr/sbin/senmailで無く手直しが必要など、結構手間取るのだが、portsだと、環境に合わせてmakeしてくれるので手間がかからない。
問題は、sequencerを使ってメールのタイトルに[abcd: 0123]のようなシーケンスを振ろうとすると返信で[abcd:0124]Re:[abcd:0123]・・・・ のようにシーケンス番号が重なってしまうことである。
これはsequencerの153行目あたりを自称nob & tamotsuさんがアドバイスしてくれているように以下の修正をして重なりを防止する。
ただし、outlook expressはメールヘッダーがMIMEの規定に違反していて、重なりを防止できない。
が、昨日outlookで実験したらOKだった。 新しい版数では対処できているのか?
while (<STDIN>) {
+ # by nob & tamotsu
+ if (/^Subject:/) {
+ s/[rR][eE]:.*[([].*d+[)]]/Re:/;
+ s/[rR][eE]:s*[rR][eE]:/Re:/g;
+ s/[rR][eE]:s*[rR][eE]:/Re:/g;
+ }
+
print IN $_;
}
あとは、/usr/local/majordomo/listsにtouch test(ML list名)を作り、touch test.seqでシーケンス番号のためのファイルを作る。 そして
#chown majordom *
#chgrp majordom *
としてグループ、オーナーともにmajordomにしておく。
また、必要ならtest.infoとtest.intoも説明文のファイルとして適当な内容のファイルも作る。
2. aliasesについて
インストールが終わるとメールのaliasesにEntryを追加してnewaliasesコマンドで修正を 反映させる。 以下はaliasesへの追加例。
owner-owner: nakamura
majordomo: "|/usr/local/majordomo/wrapper majordomo"
majordom: majordomo
majordomo-owner: nakamura
owner-majordomo: nakamura
test: "| /usr/local/majordomo/wrapper sequencer -l test -n -h
HOST名 test-going" (上の行から連続して記述)
test-going::include:/usr/local/majordomo/lists/test
owner-test:nakamura
test-request:"|/usr/local/majordomo/wrapper request-answer test"
test-approval:owner-test
test-owner:owner-test
ところで、メールのタイトルにシーケンス番号を付けるsequencerのparameterなんて知らなくて人の真似をしてaliasesに書いていたが、今回調べたら下記のようになっていた。
-A moderate
-a: approve passwd
-d debug
-f: sender 指定
-h: ML Hostname 指定
-I: restrict_post
-l: Mailing List の名前
-m: mailer option
-M: max length
-n seq を使って番号管理をする
-N Archive の写しを作る + -n 機械
-p: precedence
-R purge Received
-r: Reply-To: を使う。引数に宛先を書く( host名 付)
: が付いているのは 後に更に引数を付けるもの。
(3) メーリングリストの作成
majordomo宛てに
subscribe test
end
の内容のメールを送り、testに登録する。
登録の手続きのメールが送られてくるので、その手順に従って作業(authorize)を進める。
/usr/local/majordomo/lists内に作られたtest.configを編集すれば、シーケンス番号の付け方、認証の仕方などが変えられる。