先日eximが(使ってないのに)upgradeされちゃってsendmailのリンクが書き換わってえらい目に・・・・
直接 /var/qmail/bin/sendmailを呼ぶようにしました。
重要 リレー検出にバグがあり、ヘッダーによってはリレーされてしまったり、逆に中継されないことがわかりました。(03/06/19)
iショットからのメールも送れるようにしました。ただし添付ファイルは送れません(意味ないじゃん(^^;)
docomoのsmtpサーバーを複数設定できるようにしました。
マルチパートの判断を手抜きしていたのですが、やはり不具合が出ることがわかり、変更しました。(03/01/15)
以前のものですと、マルチパートがネストしている(htmlメールに画像を添付してある等)と送れなくなります。
今度はtext/plainなパートのみ送るようにしました。
i-modeができて出先でもメールが見れるようになり、とても便利になりましたね。
でも、SPAMメールが絶えずきて困ったものです。複雑なユーザー名にすればSPAMもこなくなるのですが、それでは使い勝手が悪くなってしまいます。また、i-modeではメールの保存ができません。
これらの問題を簡単に解決するには普通のインターネットのアドレスから転送すればいいのですが、それではi-modeから返信すればそれ以降、i-modeのアドレスとやり取りすることになってしまいます。
そこでwebを探していたらすばらしいサイトを見つけました。
qmailとiMode <- ここ
現在はスクリプトも公開されていますが、最初は公開されていなかったので自分なりに作ってみました。
私は、できるだけ簡単にしたかったので、スクリプトもいくつかにわけ、できるだけ汎用のライブラリーを用いることにしました。
オリジナルではメールのリレーが防げない点が指摘されていますが、このスクリプトではローカルのqmailが
Received: from fwispo-ext-y.docomo.xx.jp (HELO mxoo.docomo.xx.jp) (210.136.161.xxx)
というようなヘッダーをつけることを利用して docomoのメールサーバー(210.136.161.0/24)から送られてくることを確認しています。
もちろんFrom:がi-modeのアドレスであることも確認しています
このことによって docomoがfromを偽ったメールを中継するか、ipを偽ったサーバーがない限り中継できないようにした...つもりです(^^;;
動作の理屈は本家にお任せして(^^; 実装のみ説明します。
このスクリプトでは4つのdot-qmailのファイルと3つ(もしくは2つ)のperlスクリプトが必要です。
ユーザー名(アカウント)は user-i のように通常のアドレスに -i をつけました。
もちろん-iのないアドレスでも可能です。
#---- 相手からのメールをi-modeに転送します
.qmail-i
|./i.send hogehogehugahuga@docomo.xx.jp user-i
./Maildir/
#---- i-mode からのメールを相手に送ります
.qmail-i-default
|./i.recv hogehogehugahuga@docomo.xx.jp user-i
./Maildir/
#---- 転送サーバー - i-mode間で起こったエラーを相手に送り返す処理をします
.qmail-i-err-default
|./i.error hogehogehugahuga@docomo.xx.jp user-i ---- 注1
./Maildir/
注1:私は現在これを省略して転送サーバー - i-mode間でエラーが発生しても保存のみで相手に送り返していません。
#---- 転送サーバー - 相手間で起こったエラーは転送サーバーに保存しi-modeには送りません
.qmail-i-adm-default
./Maildir/
実行スクリプトはこちら (数ヵ月使用してみましたが取り合えず問題なさそうなので公開します。 ただし、責任はもちません)
sendmailのパスとホスト名、ドメイン名はそれぞれ自分の環境に合わせて変更してください。
いずれもownerのみ実行権(700)があればOKです。
実行には次の各モジュールとそれに関連したモジュールをインストールする必要があります。
Net::SMTP
MIME::Entity
MIME::Parser
apt-get install libmime-perl
サーバーを変更したらなぜかNetモジュールが動かなくなってしまって・・・
面倒なのでSendmailで送るように変更しちゃいました(^^A;
もちろん/var/qmail/bin/sendmailです。
まだ未完成品なので充分な知識のある方以外は使わないでください バウンズやループの可能性も捨てがたいので問題があったとき対処できる立場(サーバー管理ができる方)以外は決して実行しないでください。
引数のチェックもしていませんから、充分に気をつけて取り扱ってください
なお、いかなる問題が発生しても当方は責任を負いかねます
お問い合わせは 掲示板へ ぜひ感想などもm(。。)m