5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

qmailいろいろ(8)

1 :名無しさん@お腹いっぱい。:2006/11/12(日) 19:07:01
qmailの設定、インストール、関連ソフトウェアなど、
いろいろ情報交換しましょう!

前スレ qmailいろいろ(7)
http://pc8.2ch.net/test/read.cgi/unix/1114157851/

関連スレ、関連サイトは >>2-10 あたり。

2 :名無しさん@お腹いっぱい。:2006/11/12(日) 19:09:39
過去スレ
1 http://pc.2ch.net/unix/kako/987/987174898.html
2 http://pc.2ch.net/test/read.cgi/unix/1025548015/
3 http://pc.2ch.net/test/read.cgi/unix/1044498957/
4 http://pc.2ch.net/test/read.cgi/unix/1066157898/
4 http://pc5.2ch.net/test/read.cgi/unix/1066875813/
6 http://pc8.2ch.net/test/read.cgi/unix/1086748611/
7 http://pc8.2ch.net/test/read.cgi/unix/1114157851/

関連スレ
djb(4)
http://pc8.2ch.net/test/read.cgi/unix/1148064021/
Internet Mail System 総合スレ 3
http://pc8.2ch.net/test/read.cgi/unix/1128256415/
〓〓〓いつまでも次世代 IMAP その2〓〓〓
http://pc8.2ch.net/test/read.cgi/unix/1114279916/

関連Webサイト
本家サイト(英語)
ttp://cr.yp.to/qmail.html
qmail.jp
ttp://www.qmail.jp/
DJB's software maniacs
ttp://www.emaillab.org/djb/
DJB softwares ML
ttp://groups.yahoo.co.jp/group/djb-jp/
日本Courierユーザ会
ttp://courier-users.jp/
連載記事 「実用qmailサーバ運用・管理術」
ttp://www.atmarkit.co.jp/flinux/index/indexfiles/qmailindex.html
qmail のある暮らし
ttp://ya.maya.st/mail/lwq.html

3 :名無しさん@お腹いっぱい。:2006/11/12(日) 19:13:10
関連ソフトウェア(含パッチ)
netqmail
ttp://www.qmail.org/netqmail/
checkpw
ttp://checkpw.sourceforge.net/
qmail-vida
ttp://qmail-vida.sourceforge.jp/
vpopmail
ttp://www.inter7.com/vpopmail.html
アウトルックをロックアウト
ttp://www.unixuser.org/~euske/doc/outlook/index.html
UW-IMAPDてんこもり拡張ぱっく
ttp://www.gentei.org/~yuuji/software/imapext/
Qgrey - S25R + qgreylist パッチ
ttp://k2net.hakuba.jp/qgrey/
Qmail-Scanner: Content Scanner for Qmail
ttp://qmail-scanner.sourceforge.net/
SPF implementation for qmail
ttp://www.saout.de/misc/spf/
qmail-spp (SMTP plugin patch)
ttp://qmail-spp.sourceforge.net/
QmailMSP (Submissionポート)
ttp://www.aripollak.com/wiki/Main/QmailMSP

4 :名無しさん@お腹いっぱい。:2006/11/13(月) 00:36:47
こっちに統合ってことになったでしょ。

djb(4)
http://pc8.2ch.net/test/read.cgi/unix/1148064021/

5 :名無しさん@お腹いっぱい。:2006/11/13(月) 08:22:38
統合・吸収とか言って実現した事無いよなぁ〜w

6 :名無しさん@お腹いっぱい。:2006/11/17(金) 19:33:13
.qmail-test_01
.qmail-test_02
.qmail-test_03
  :
.qmail-test_11

といったようにテスト用アカウントを作成し、中身は全て
同じアドレスへの転送としているのですが、.qmail-test_*
このように一つの設定で共通化するようなことはできない
ものでしょうか。

ご教示いただけますと幸いです。

7 :名無しさん@お腹いっぱい。:2006/11/18(土) 08:28:39
統合・吸収とか言って実現した事無いよなぁ〜w

8 :名無しさん@お腹いっぱい。:2006/12/01(金) 18:05:29
spam対策でどのパッチ当てようか悩んでいたら、
ttp://www.fehcom.de/qmail/spamcontrol.html を発見。一からやるのなら楽でいいかなぁとか思ったけど、
と思ったけど、既存のpatch当て当てした環境との互換性を考えると頭が痛い。

9 :名無しさん@お腹いっぱい。:2006/12/02(土) 07:41:48
greylistingにはなにつかってる? qmail用なのにPerlつかったりMySQLつかったりするものばかり。
Cで書かれていてcdb使うやつはないのかな…

10 :名無しさん@お腹いっぱい。:2006/12/02(土) 08:32:33
>>9
無難にQgrey。

正規表現を使いまくるからperlで作ったんじゃないのかな。
perlがいやならperlccでもしてみたら?
てか、自分で作ってくれw

11 :名無しさん@お腹いっぱい。:2006/12/02(土) 08:45:49
>>9
つ cqGreylist ttp://oss.albawaba.com/cqgreylist.html

12 :名無しさん@お腹いっぱい。:2006/12/02(土) 09:10:13
>>10
いまだにSolaris8にパッチ当て当てしたmail serverを使っているので、
Perl5.8必須とかなっているの萎えるのですだ。

>>11
よさげかなと思ってarchiveをダウンロードしてREADMEを見たら、
this implementation provides only greylisting based on the source IP address
and not the full triplet as suggested in the greylisting whitepaper.
う〜む。

んで、cqgreylist.cを見るとcdbすら使わずにやっているのか。

13 :名無しさん@お腹いっぱい。:2006/12/02(土) 11:14:38
Qgreyの元になっているqgreylistも
qgreylist, on the other hand, just greylists by source IP address. This is
mainly because it's written as a wrapper for qmail-smtp so has no other
information available. For home and small office use this works nearly as well.

14 :名無しさん@お腹いっぱい。:2006/12/02(土) 17:31:21
cdb は BerkeleyDB なんかと違って、DB にデータを追加することができず、
ゼロからの生成しかできないから、greylisting みたいな用途で使うには
まったく向いていない。

つーか、qmail をこれ以上いじりまわすのはもうやめたら。もう終わってるから。

15 :名無しさん@お腹いっぱい。:2006/12/02(土) 19:41:27
みなpostfixに移行してるからなぁ・・・
でも、qmailを手放せない俺ガイル。

16 :名無しさん@お腹いっぱい。:2006/12/03(日) 01:44:22
qmailadminのようにマルチドメイン対応でML管理もできる
日本語対応のwebフロントエンドがあれば、postfixに乗り換えるんだけど。

17 :名無しさん@お腹いっぱい。:2006/12/03(日) 02:01:17
qmail単体でサブミッションポートって実現できますか?

18 :名無しさん@お腹いっぱい。:2006/12/03(日) 09:36:12
Qgrey & qgreylistはIPアドレスでしかgreylistingやっていないから、案の定、サイトのユーザ数が
ある程度多いと、spam送信側が多人数に対していちいちconnection張りにきたのを再送信したと見なして、
そのIPからのメールを大開放しちゃうなぁ。

postfix + postgreyとはspamの遮断率に格段の差が出てる。
いい加減、qmail捨てたい…

>>17
単体というのがなにを示しているのかわからんけど、qmailでsubmission対応はできる。
SMTP AUTH必須にしたqmail-smtpdをsubmissionポートで動かす。

19 :名無しさん@お腹いっぱい。:2006/12/03(日) 11:53:32
>>17
SubmissionPortを理解してるか?

20 :名無しさん@お腹いっぱい。:2006/12/03(日) 12:20:47
>>18
つ ttp://qmail-spp.sourceforge.net/

21 :名無しさん@お腹いっぱい。:2006/12/03(日) 14:50:40
qmail-sqqのgreylisting-sppつかって、QgreyのようにS25R + greylistingができないかな?

22 :名無しさん@お腹いっぱい。:2006/12/04(月) 01:15:08
>>18>>19
すみません、説明が不足していました。
25番ポート側ではrcpthostsを有効にするのと587番側ではSMTP_AUTHに対応してrcpthostsを無視するようにする方法が知りたいです。

それっぽいpatchがいくつかあったので当ててみたんですが、
220 hogehoge.com ESMTP
EHLO [192.168.4.11]
250-hogehoge.com
250-AUTH LOGIN CRAM-MD5 PLAIN
250-AUTH=LOGIN CRAM-MD5 PLAIN
250-PIPELINING
250 8BITMIME
AUTH LOGIN
503 auth not available (#5.3.3)
503 auth not available (#5.3.3)
RSET
250 flushed
MAIL FROM:<yama@kawa.com>
250 ok
RCPT TO:<inu@neko.com>
553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)
QUIT
221 hogehoge.com

となってしまいます、、

試しに手作業でaddrallowed()関数で環境変数SUBMISSIONが存在した場合はreturn 0;するようにしたんですがダメでした。

if(env_get("SUBMISSION")) return 0;

23 :名無しさん@お腹いっぱい。:2006/12/04(月) 04:03:12
>>22
パッチって
int addrallowed()
{
int r;
+ if(env_get("SUBMISSION")) return 0;
r = rcpthosts(addr.s,str_len(addr.s));
って感じだよね?

あとは
smtp用に
exec env - PATH="/var/qmail/bin:/usr/local/bin:/bin:/usr/bin:$PATH" \
tcpserver -v -x /home/vpopmail/etc/tcp.smtp.cdb -R -h -l0 -u qmaild -g nofiles \
0 smtp qmail-smtpd /home/vpopmail/bin/vchkpw /bin/true 2>&1

submission用に
exec env - SUBMISSION="" PATH="/var/qmail/bin:/usr/local/bin:/bin:/usr/bin:$PATH¥" \
tcpserver -v -R -H -l0 -u qmaild -g nofiles \
0 587 qmail-smtpd /home/vpopmail/bin/vchkpw /bin/true 2>&1
すればいいだけでそ。
ヲレの例ではvpopmail使ったり、SMTP側ではPOP before SMTP使ったりしているから
ちょっとだけ煩雑だけど。

24 :名無しさん@お腹いっぱい。:2006/12/04(月) 08:39:37
>>22
パッチって>>3の一番下?

25 :名無しさん@お腹いっぱい。:2006/12/04(月) 16:18:38
>>21
それ以前に、greylisting-sppはBDB40以外への対応とか、sqlite3対応とかして欲しいところ。
sqlite2 -> sqlite3への移行は関数名書き換えるだけなのかと思っていたら、そんな単純じゃないのねん…

26 :名無しさん@お腹いっぱい。:2006/12/05(火) 17:14:54
当方プロパイダーDTIで携帯宛にメールが送れません。
調べてみたところ、携帯会社がSPAM対策をしていて、それにひっかかっているみたいで
smtproutesにて、プロパイダーのSMTPサーバーを振ってやる事で回避できるみたいですが、
DTIはsubmissionを採用しているので、認証が必要です。

smtproutesで、認証等の設定はできるんでしょうか?
また、できないとして、どのような対策をとるべきでしょうか?

27 :名無しさん@お腹いっぱい。:2006/12/05(火) 17:35:40
>>26
http://tomclegg.net/qmail/#qmail-remote-auth

28 :名無しさん@お腹いっぱい。:2006/12/05(火) 17:57:51
>>24
それです。
578ポートはrcpthostsを無視してオープンリレーっぽくしたいのですが、、

29 :名無しさん@お腹いっぱい。:2006/12/05(火) 18:06:42
>>28
・・・パッチの中身を見て味噌。

30 :名無しさん@お腹いっぱい。:2006/12/05(火) 18:07:23
>>27
ありがとうございます。

説明通りパッチを当ててインストールをし、
smtproutesにdocomo.ne.jp:hogehgoe.com ID pass
の順で記述してみましたが、やはり弾かれてしまいます。

submissionポートにコネクションすればいけそうなんですけど、あと一歩というところなんですが・・・orz

31 :名無しさん@お腹いっぱい。:2006/12/05(火) 18:14:44
>>30
DTI固有の問題みたいですね。
tcpdumpとかでSMTPサーバとのやり取りを覗いて見たら?

32 :31:2006/12/05(火) 18:17:03
>>30
あ・・・ポート指定が無いよ。
example.ne.jp:example.com:578 ID pass



33 :名無しさん@お腹いっぱい。:2006/12/05(火) 18:45:27
>>31-32
ポート指定しましたが、ダメでしたorz

しばらく格闘してみます、アドバイスありがとうございました。

34 :名無しさん@お腹いっぱい。:2006/12/05(火) 19:06:51
>>28
お前、ものすごいバカだろ。

35 :名無しさん@お腹いっぱい。:2006/12/05(火) 20:10:42
ttp://forum.tsukaeru.net/viewtopic.php?t=2266 でqgreylistを改造して
spamの排除効率上げているね。

qgreylist単体だとアカウント数50個ぐらいのレベルになるとspamがだだ漏れに
近くなるから、IPアドレスだけでなく、きちんとMAIL FROMとRCPT TO:も記録して
greylistingするのが必須になるけど、とりあえずRCPT TO:を記録する改造方法が
書かれている。

けど、こういうことはqmail-sppでやったほうがいいと思う。

36 :名無しさん@お腹いっぱい。:2006/12/07(木) 20:44:04
>>34
バカなりにがんばってるんですが、
patchもあてて起動スクリプトも環境変数SUBMISSIONを定義するようにしたんですが>>22の状況になります。
なぜかSMTP_AUTHもちゃんと動きません、、

# smtp submission port
export SUBMISSION="";\
/usr/local/bin/tcpserver -R -c 100 -u 506 -g 503 -x \
/etc/tcp.smtp.cdb \
hogehoge.com submission \
/var/qmail/bin/qmail-smtpd \
/bin/checkpassword \
2>&1 | /var/qmail/bin/splogger smtpd 3 &

37 :名無しさん@お腹いっぱい。:2006/12/08(金) 00:52:21
smtp_authのみ許可するのってどうすんですか?

38 :名無しさん@お腹いっぱい。:2006/12/11(月) 10:00:38
他に当ててるパッチを書けと・・・

39 :名無しさん@お腹いっぱい。:2006/12/11(月) 18:48:41
Qgreyではspamが漏れまくるようになってきたので、qmail-spp用の
greylisting-sppを使おうと思っております。でもS25Rが出来ないと
副作用が大きいって事でs25rプラグインを書いている最中なんだけど、
$ env TCPREMOTEHOST=unknown ./s25r.pl
N
$ env TCPREMOTEHOST=foo.exsample.com ./s25r.pl
A
てな感じの動作のs25r.plを作ってplugsinsに置いて、
/var/qmail/control/smtppluginsの[rcpt]セッション中に
plugins/vpopmail_check_recipient.sh
plugins/s25r.pl
plugins/greylisting-spp
plugins/tarpit
とかいう感じで書いておけばいいのかな。

あと、SMTP AUTHが通ったclient要に、SMTPAUTHUSERがセットされていれば
Aを返すようにするとQgreyの弱点が解消できるのかな。

40 :名無しさん@お腹いっぱい。:2006/12/11(月) 19:05:29
>>36
SMTP AUTHが動いていないのは最初のログで明白だけど、どんな環境か明示しないんだもの。
エスパー希望なら最初からそう書け。

41 :名無しさん@お腹いっぱい。:2006/12/11(月) 20:09:57
>>39
AもNも最後のコマンドとしてつかう場合でそ。
S25Rに引っかかった場合は、なにも返さなければ次の処理に行くんじゃない。

42 :名無しさん@お腹いっぱい。:2006/12/12(火) 02:49:20
>>40
すみません、
環境としてはDELL SC430にFC5を入れてます。
qmailにはerrno.h、reject、smtp-auth、date-localのパッチを入れてます。
checkpasswordはchmod 4555してます。

SMTP AUTHのパスワードって/etc/passwdですよね。
なんで認証できないんだろ。

43 :名無しさん@お腹いっぱい。:2006/12/12(火) 10:33:49
>>41
Thanks。qmail-spp用S25Rプラグインが出来ました。S25Rにひっかからない
場所からのメールはgreylistingにかからないことと、tarpitと組み合わせて
Qgreyより遥かに遮断率が向上したのを確認。spamはQgreyに比べて1/5ぐらいに
なっています。

それにしても、qmail-spp用プラグインは作るの楽しいなぁ。
改造がここまで簡単だとは。ただ、セキュリティ上の注意が必要だけど。

>>42
250-AUTH=LOGIN CRAM-MD5 PLAIN
といっているのに、
AUTH LOGINをすると
503 auth not available (#5.3.3) となるのだから、
smtp-authパッチがうまいこと動作してないんでそ。

どんなsmtp-authパッチを使っているのか知らないけど、とりあえず
netqmail-1.0.5 ttp://www.qmail.org/netqmail/ と
Bill Shupp's SMTP-AUTH/TLS composite patch, version 20060105
ttp://shupp.org/patches/netqmail-1.05-tls-smtpauth-20060105.patch
の定評のある組み合わせで試してみれば。

44 :名無しさん@お腹いっぱい。:2006/12/12(火) 16:42:23
>>39
vpopmail_check_recipient.shって
ttp://perolo.vantage.at/qmail-spp/qmail-spp.plugin.vpopmail_check_recipient.html
だと思うけど、vuserinfoをsetuidしなきゃいけなかったりと、ちょっとあれじゃない?
sedとかechoとかのパスも直打ちで、書き換えせんといかんし。

vuserinfo.cを元にqmail-spp用のプラグイン作ったほうがいいと思う。

45 :名無しさん@お腹いっぱい。:2006/12/13(水) 00:27:26
qmail-sppでtaRgrey ttp://d.hatena.ne.jp/stealthinu/20061206/p1
ttp://k2net.hakuba.jp/targrey/ をやらせようと思ったんだけど、
qmail-spp用のtarpit.cって基本的にsleep()するだけで、sleep()している最中に
コネクション切れたこと認識できないから、tarpit

46 :名無しさん@お腹いっぱい。:2006/12/13(水) 01:05:07
うひゃ、途中で書き込んじゃった。
tarpitに成功したらgreylistingを省略するにはstdoutにAを出すだけで大丈夫だけど、
tarpit中にコネクションが切れたことを検出できないので、結局greylistingを
完全に飛ばすことになっちゃう。

ってことで、tarpit単体のpluginをいじるのではなく、tarpitとgreylistingとの
複合pluginにして、
・greylisting DBに未登録の場合
- greylisting DBに登録
- tarpitをする (その際に切れることがあるが、プラグインの処理は続行)
- return 0; をして、このプラグインを抜ける。
コネクションが切れている場合はプラグインを抜けても当然メールは受け取れない。

・greylisting DBに登録済みの場合
- リジェクト時間内の場合、stdoutにE451を返す
- リジェクト時間外の場合、greylist DBを消す
- return 0; をして、このプラグインを抜ける。
ってな感じの動作を考えた。けど、これってtarpitで切れたコネクションをsenderの
MTAが再送してくれることが前提になるけど、別に問題ないのかな?

47 :名無しさん@お腹いっぱい。:2006/12/13(水) 06:04:09
とりあえず実装してみたけど、プラグインからはtarpitting後にメールを受け取ったか
どうかがわからないので、たとえメールを受け取ったとしても、リジェクト時間内に
再度同じIP & MAIL FROM & RCPT TOのメールが来た場合、再送エラーになっちゃう。

再送エラーが出ないように、tarpitting後にそのIP & MAIL FROM & RCPT TOをリジェクト時間外
に設定しちゃうと、当然ながらリジェクト時間内に関わらず、再送してくると受け入れちゃう。

後者の動作はgreylistingの再送時間設定が無意味になるので、非常にやばい。
前者の動作は無意味な再送が多発しそうでいや。まあ、tarpittingのみとか、
greylistingのみとかよりはメールを受け取りやすいけれど。

なんかうまいことできないものかなぁ。

48 :名無しさん@お腹いっぱい。:2006/12/13(水) 10:09:13
>>47
greylistingDBに何を記録するかが肝だよな。
[Message-ID]とか>>35みたくMD5にするか・・・

49 :名無しさん@お腹いっぱい。:2006/12/13(水) 10:57:18
>>48
ソースIPとMAIL FROMとRCPT TOのセットでの判別だと、>>47の例のように再送ではないのに
再送と誤認してしまうし、別のIPアドレスからの再送に対応できないしね。

QgreyではソースIPを/28とか/24とかでまとめちゃうことで、別のIPアドレスからの再送に対応
しようとしていたけど、もうちょっとうまい方法がないものか…

50 :名無しさん@お腹いっぱい。:2006/12/13(水) 11:12:55
かなり安易な考えだけど、逆引きできるIPならドメイン部も比較の考慮にいれるとか。

51 :名無しさん@お腹いっぱい。:2006/12/13(水) 11:12:59
>>47
とりあえず、ソースくれ。>>35の改造もqgreylistの改造方法については書かれているけど
全体のソースはなかったので、ヲレはQgreyでspamだだ漏れ生活なのだ。

52 :名無しさん@お腹いっぱい。:2006/12/13(水) 12:27:17
>>48
再送の際、DATA部が書き変わるようなMTAって存在しないよね?
あと、別のIPアドレスからの再送に完全に対応するには、極論すればソースIPは無視しないといけない。

というわけで、greylisting DBにはMAIL FROM、RCPT TO、DATAのMD5を記録するのはどうよ。

53 :名無しさん@お腹いっぱい。:2006/12/13(水) 12:29:24
毎回MD5をするのもなぁ・・・

54 :名無しさん@お腹いっぱい。:2006/12/13(水) 12:33:48
>>53
うむ。DATA丸ごとMD5は処理的に重すぎるな。ヘッダだけでいいんじゃない?

55 :名無しさん@お腹いっぱい。:2006/12/13(水) 13:14:18
一昨日からにわかに活気づいてきたな。スパム対策がよくわからんからqmailを
捨てようと思っていたけど、なんだか面白そう。qmail-sppはこのスレのテンプレには
あったけど、実際にどういうものか知らなかった

56 :名無しさん@お腹いっぱい。:2006/12/13(水) 16:07:57
>>51
スマソ。業務時間外に自宅で作ったスクリプトなんだけど、会社のサーバに
入れるために作ったってこともあって、会社の所有物扱いになる可能性があるんで、
上司から許可もらわないと公開できないや。

元がGPLなソースとはいえ、会社がこれを他に配布しない場合にはソースを
公開する義務は生じないし。

まあ、うまくいけば会社のwebサーバから配布できるようになるかもしれないけど。

ちなみに、qmail-spp用プラグインのgreylisting-spp-0.2のsrc/greylisting-spp.c
122行目近辺の
/* No match found -> reject and add entry */
reject ();
ってところを、reject()せずに環境変数にしたがってsleep ()させて、
STDERRにログを吐くようした。
なので、誰でもすぐに同じようなものが作れると思う。

S25Rのほうは、Qgreyのqgreylist用S25Rパッチを単体のプログラムにして、
$ env TCPREMOTEHOST=unknown ./s25r.pl
$ env TCPREMOTEHOST=foo.bar.baz ./s25r.pl
A
という動作にするようにしたもの。

57 :名無しさん@お腹いっぱい。:2006/12/13(水) 16:15:20
>>52
ソースIPは再送かどうかのチェックには使わないけど、記録はしておいたほうがいい。
じゃないと、いったん再送があったサーバには、それ以後4xxエラーを返さないようにして
遅延を避けることが出来なくなる。

58 :名無しさん@お腹いっぱい。:2006/12/13(水) 16:24:27
あと、qmail-sppだけではDATAの中身は見ることができないと思う。
ちなみに、>>35のリンク先ではqmail-smtpdのsmtp_data()を改造している。

59 :名無しさん@お腹いっぱい。:2006/12/21(木) 15:12:00
$msg = "MIME-Version: 1.0\n";
〜 省略 〜
$msg .= "From: $this->m_from\n";
$mp = popen("/usr/sbin/sendmail -f $this->m_from $this->m_to", "w");
fputs($mp, $msg);
pclose($mp);

今までメール送信するときはこの用にsendmailを使ってきたのですが、
qmailで同じようなことを行う方法をご存知ないでしょうか。
よろしくお願い致します。

60 :名無しさん@お腹いっぱい。:2006/12/21(木) 15:29:42
>>59
SMTP しゃべっちゃったら?

61 :名無しさん@お腹いっぱい。:2006/12/22(金) 11:06:47
qmailのsendmailラッパーじゃダメなのかい?

62 :名無しさん@お腹いっぱい。:2006/12/27(水) 17:56:59
あの、taRgreyとQgreyの中の人なのですが、自分はpostfix使いのため
qmailでこんな開発が進んで来ているとは知りませんでした。

もしqmail向けtaRgreyサーバのようなものが作られましたら、QgreyやtaRgreyのページから
リンクや紹介などさせていただきたいと思います。

tarpittingを抜けたかどうかの判断ですが、postfixの場合SMTPセッションのどのタイミングで
呼ばれたか(RCPT終わった時点か、DATA終わった時点か)で判断してます。
qmail-sppではそういう、どのタイミングでフィルタするかとかの設定は出来るのでしょうか?


63 :名無しさん@お腹いっぱい。:2006/12/28(木) 00:48:14
>>62
qmail-sppは
CONNECTION (TCP/IPのセッションを張りに来たとき) AUTH HELO MAIL RCPT DATA
の各セッション中に適用したいプラグインを記述できる。
詳しくは ttp://qmail-spp.sourceforge.net/doc/ 参照。

ただ、このスレのログにあるように、DATAセッション中のプラグインは別にDATAの
中身を見ることが出来ず、以前のセッションで得たデータやプラグインの結果を元に、
DATAセッション中にコネクションを切るか切らないかしかできないのであまり意味がない。

64 :名無しさん@お腹いっぱい。:2006/12/28(木) 09:46:38
>>63
読んでみました。というか、ちょっと勘違いしてました。
postfixのポリシーデーモンのような形ではなく、呼び出し毎にフィルタスクリプトが起動されるのと
tarpitはtarpitプラグイン中でsleepして実現してるので、素直に書いて実現出来そうに思います。
簡単に擬似コード書きます。

if (tarpit_blacklist_dbにclient_ipが登録されていない?) {
greylist_dbへclient_ip/to/fromを登録
sleepで返答遅延
if (接続が切れている(tarpitを待てなかった)?) {
tarpit_blacklist_dbへclient_ipを登録 }
#tarpit待てたから許可
} else { #tarpitを待てなかったipから再接続
if (greylist_dbにclient_ip/to/fromが登録されていない?) {
greylist_dbへclient_ip/to/fromを登録
再送要求(450)を返す }
#再送だから許可
}

こんな感じ。プラグイン内からコネクション断が検知出来るか少し不安ですが出来ますよね?
tarpitプラグインとgreylistプラグインを別個にを使うのではなく、greylistiプラグインに
tarpit機能を組み込むように修正するとよいと思います。

65 :名無しさん@お腹いっぱい。:2006/12/28(木) 16:19:31
>>64
qmail-sppから受け取れるのは環境変数だけだけど、コネクションまわりのことを知らせる
環境変数は存在しないので、プラグイン内からコネクション断は検知できません。
なので、それを実現しようとするとqmail-smtpdにさらにpatchを当てる必要あり。

どうせqmail-smtpdをいじるのなら、qmail-sppのポリシーを曲げて、DATAをpluginに
渡せるようにして、MAIL FROM & RCPT TO & IPだけの記録ではなく、きちんとメールの
中身を見て再送検知できるようにしたほういいというのは>>49-58の話題。
そして、その実装例が>>35のリンク先 ttp://forum.tsukaeru.net/viewtopic.php?t=2266

ちなみにヲレはtaRgreyは>>56の手法で実装したので、まさにgreylisting pluginの改造ですだ。

66 :名無しさん@お腹いっぱい。:2006/12/28(木) 17:08:15
>>65
なるほど。コネクション断は検知できないのですね。むむ。
でもまあ確かに、tarpit通ったかどうかの判定省いても、ほぼ目的は達成できてますから、
となるともう改善手出来るところはないですね。

>>56の内容で、パッチの内容は把握できたので、65=56さんのパッチが公開できないようなら
適当に作ってここの人でテストしてもらって、んで自分が公開するということも可能です。
ただ、テスト環境もないし、もともとのアイデアは56さんだから、そちらで公開していただけるなら
そのほうがベターだと思います。

ちなみに、DATAを受け取り終わった時点で450で再送要求は、通らないMTAが多いから
やめたほうが良いらしいです。
ただ下の研究では再送要求でなく、こちらから強制セッション断してエラーを起こさせて
それで再送させてるとのことなので、そう出来れば良いのかも。
http://info.ipsj.or.jp/01kyotsu/award/funai_bp/2006_pdf/LL_008.pdf


67 :名無しさん@お腹いっぱい。:2006/12/28(木) 17:39:16
あと、上の方でDATAかヘッダをMD5でという話が出てましたが、上記研究では
Message-IDを使われてます。
普通再送は同一Message-IDですから、これがたぶん一番スマートだと思います。

68 :名無しさん@お腹いっぱい。:2006/12/28(木) 17:53:27
公開許可が取れたので、ドキュメント周りを整備中…

>>66-67
なるほど。でも、DATAが送られている最中に強制セッション断は実装が辛そうだなぁ

69 :名無しさん@お腹いっぱい。:2006/12/29(金) 10:46:38
>>68
お、それは良かったです。
強制セッション断は、どのくらい再送率が下がるかという問題もあると思います。

29 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)