From: Philipp Leusmann on 8 Jul 2010 11:58 Hi all, to stop backscattering I wrote a tcp_table server which checks quota availability for incoming messages. I read <http://www.postfix.org/tcp_table.5.html> over and over again, but still I am getting messages like Jul 8 17:46:24 s15277780 postfix/smtpd[3325]: warning: read TCP map reply from localhost:1337: unexpected EOF (Success) Jul 8 17:46:25 s15277780 postfix/smtpd[3325]: warning: tcp:localhost:1337: table lookup problem in the logfile, when the server returns a 400 or 500 reply. For a 200-reply it works ok and the mail is delivered. For a 400-reply, my server generates the following (from my logfile): The encoded reply is [400 User%20over%20quota ] The server sends everything between [ and ] . I think that should be ok. Or isn't it? When I try a postmap -vv -q "benny" tcp:localhost:1337 (benny is over quota) the output ends with: postmap: loaded dict_tcp_open = 7f50d057bd20 postmap: dict_open: calling tcp open routine postmap: dict_open: tcp:localhost:1337 postmap: dict_tcp_lookup: key benny postmap: trying... [127.0.0.1] postmap: dict_tcp_lookup: send: get benny postmap: dict_tcp_lookup: recv: 400 User%20over%20quota postmap: dict_tcp_lookup: soft error: 400 User%20over%20quota For a user having available space, it looks like: postmap: loaded dict_tcp_open = 7f30f5c76d20 postmap: dict_open: calling tcp open routine postmap: dict_open: tcp:localhost:1337 postmap: dict_tcp_lookup: key laus postmap: trying... [127.0.0.1] postmap: dict_tcp_lookup: send: get laus postmap: dict_tcp_lookup: recv: 200 OK postmap: dict_tcp_lookup: found: OK OK Can anybody tell me, what is wrong? And what does postfix return the the delivering client in my current case? a 500 ? Regards, Philipp
From: Noel Jones on 8 Jul 2010 12:23 On 7/8/2010 10:58 AM, Philipp Leusmann wrote: > Hi all, > > to stop backscattering I wrote a tcp_table server which checks quota availability for incoming messages. > I read<http://www.postfix.org/tcp_table.5.html> over and over again, but still I am getting messages like > > Jul 8 17:46:24 s15277780 postfix/smtpd[3325]: warning: read TCP map reply from localhost:1337: unexpected EOF (Success) > Jul 8 17:46:25 s15277780 postfix/smtpd[3325]: warning: tcp:localhost:1337: table lookup problem > > > in the logfile, when the server returns a 400 or 500 reply. For a 200-reply it works ok and the mail is delivered. > > For a 400-reply, my server generates the following (from my logfile): > > The encoded reply is [400 User%20over%20quota > ] > > > The server sends everything between [ and ] . I think that should be ok. Or isn't it? > > > When I try a > > postmap -vv -q "benny" tcp:localhost:1337 > > (benny is over quota) > > the output ends with: > > postmap: loaded dict_tcp_open = 7f50d057bd20 > postmap: dict_open: calling tcp open routine > postmap: dict_open: tcp:localhost:1337 > postmap: dict_tcp_lookup: key benny > postmap: trying... [127.0.0.1] > postmap: dict_tcp_lookup: send: get benny > postmap: dict_tcp_lookup: recv: 400 User%20over%20quota > postmap: dict_tcp_lookup: soft error: 400 User%20over%20quota > > For a user having available space, it looks like: > > postmap: loaded dict_tcp_open = 7f30f5c76d20 > postmap: dict_open: calling tcp open routine > postmap: dict_open: tcp:localhost:1337 > postmap: dict_tcp_lookup: key laus > postmap: trying... [127.0.0.1] > postmap: dict_tcp_lookup: send: get laus > postmap: dict_tcp_lookup: recv: 200 OK > postmap: dict_tcp_lookup: found: OK > OK > > > > Can anybody tell me, what is wrong? > > And what does postfix return the the delivering client in my current case? a 500 ? > > Regards, > Philipp The 200, 400, and 500 codes indicate the status of the lookup itself, and do not indicate the result. 200, the lookup found something, here it is: (OK, DEFER, REJECT ... other access(5) actions) 400, the lookup table is broken, try later 500, the key wasn't found In the case of an over-quota user, your table should return 200 REJECT User over quota or DEFER if that's the action you want. This isn't documented explicitly in the README because tcp tables can be used for purposes other than access maps. -- Noel Jones
From: Philipp Leusmann on 8 Jul 2010 13:02 Am 08.07.2010 um 18:23 schrieb Noel Jones: > On 7/8/2010 10:58 AM, Philipp Leusmann wrote: >> Hi all, >> >> to stop backscattering I wrote a tcp_table server which checks quota availability for incoming messages. >> I read<http://www.postfix.org/tcp_table.5.html> over and over again, but still I am getting messages like >> >> Jul 8 17:46:24 s15277780 postfix/smtpd[3325]: warning: read TCP map reply from localhost:1337: unexpected EOF (Success) >> Jul 8 17:46:25 s15277780 postfix/smtpd[3325]: warning: tcp:localhost:1337: table lookup problem >> >> >> in the logfile, when the server returns a 400 or 500 reply. For a 200-reply it works ok and the mail is delivered. >> >> For a 400-reply, my server generates the following (from my logfile): >> >> The encoded reply is [400 User%20over%20quota >> ] >> >> >> The server sends everything between [ and ] . I think that should be ok. Or isn't it? >> >> >> When I try a >> >> postmap -vv -q "benny" tcp:localhost:1337 >> >> (benny is over quota) >> >> the output ends with: >> >> postmap: loaded dict_tcp_open = 7f50d057bd20 >> postmap: dict_open: calling tcp open routine >> postmap: dict_open: tcp:localhost:1337 >> postmap: dict_tcp_lookup: key benny >> postmap: trying... [127.0.0.1] >> postmap: dict_tcp_lookup: send: get benny >> postmap: dict_tcp_lookup: recv: 400 User%20over%20quota >> postmap: dict_tcp_lookup: soft error: 400 User%20over%20quota >> >> For a user having available space, it looks like: >> >> postmap: loaded dict_tcp_open = 7f30f5c76d20 >> postmap: dict_open: calling tcp open routine >> postmap: dict_open: tcp:localhost:1337 >> postmap: dict_tcp_lookup: key laus >> postmap: trying... [127.0.0.1] >> postmap: dict_tcp_lookup: send: get laus >> postmap: dict_tcp_lookup: recv: 200 OK >> postmap: dict_tcp_lookup: found: OK >> OK >> >> >> >> Can anybody tell me, what is wrong? >> >> And what does postfix return the the delivering client in my current case? a 500 ? >> >> Regards, >> Philipp > > The 200, 400, and 500 codes indicate the status of the lookup itself, and do not indicate the result. > > 200, the lookup found something, here it is: (OK, DEFER, REJECT ... other access(5) actions) > 400, the lookup table is broken, try later > 500, the key wasn't found > > In the case of an over-quota user, your table should return > 200 REJECT User over quota > or DEFER if that's the action you want. > > This isn't documented explicitly in the README because tcp tables can be used for purposes other than access maps. > > -- Noel Jones Noel, thanks for your advice. This really should be pointed out more explicitly in the documentation. As for 500, would it be a good practice to return 500, if the key, which in this case is the email-adress is not known at all? I also use a local_recipients_map, which already decides if a user exists or not. So, which of the both is evaluated first? local_recipient_maps or smtpd_recipient_restrictions ? What would be the best practice for my case? Regards, Philipp
From: Philipp Leusmann on 8 Jul 2010 13:13 Am 08.07.2010 um 19:02 schrieb Philipp Leusmann: > > Am 08.07.2010 um 18:23 schrieb Noel Jones: > >> On 7/8/2010 10:58 AM, Philipp Leusmann wrote: >>> Hi all, >>> >>> to stop backscattering I wrote a tcp_table server which checks quota availability for incoming messages. >>> I read<http://www.postfix.org/tcp_table.5.html> over and over again, but still I am getting messages like >>> >>> Jul 8 17:46:24 s15277780 postfix/smtpd[3325]: warning: read TCP map reply from localhost:1337: unexpected EOF (Success) >>> Jul 8 17:46:25 s15277780 postfix/smtpd[3325]: warning: tcp:localhost:1337: table lookup problem >>> >>> >>> in the logfile, when the server returns a 400 or 500 reply. For a 200-reply it works ok and the mail is delivered. >>> >>> For a 400-reply, my server generates the following (from my logfile): >>> >>> The encoded reply is [400 User%20over%20quota >>> ] >>> >>> >>> The server sends everything between [ and ] . I think that should be ok. Or isn't it? >>> >>> >>> When I try a >>> >>> postmap -vv -q "benny" tcp:localhost:1337 >>> >>> (benny is over quota) >>> >>> the output ends with: >>> >>> postmap: loaded dict_tcp_open = 7f50d057bd20 >>> postmap: dict_open: calling tcp open routine >>> postmap: dict_open: tcp:localhost:1337 >>> postmap: dict_tcp_lookup: key benny >>> postmap: trying... [127.0.0.1] >>> postmap: dict_tcp_lookup: send: get benny >>> postmap: dict_tcp_lookup: recv: 400 User%20over%20quota >>> postmap: dict_tcp_lookup: soft error: 400 User%20over%20quota >>> >>> For a user having available space, it looks like: >>> >>> postmap: loaded dict_tcp_open = 7f30f5c76d20 >>> postmap: dict_open: calling tcp open routine >>> postmap: dict_open: tcp:localhost:1337 >>> postmap: dict_tcp_lookup: key laus >>> postmap: trying... [127.0.0.1] >>> postmap: dict_tcp_lookup: send: get laus >>> postmap: dict_tcp_lookup: recv: 200 OK >>> postmap: dict_tcp_lookup: found: OK >>> OK >>> >>> >>> >>> Can anybody tell me, what is wrong? >>> >>> And what does postfix return the the delivering client in my current case? a 500 ? >>> >>> Regards, >>> Philipp >> >> The 200, 400, and 500 codes indicate the status of the lookup itself, and do not indicate the result. >> >> 200, the lookup found something, here it is: (OK, DEFER, REJECT ... other access(5) actions) >> 400, the lookup table is broken, try later >> 500, the key wasn't found >> >> In the case of an over-quota user, your table should return >> 200 REJECT User over quota >> or DEFER if that's the action you want. >> >> This isn't documented explicitly in the README because tcp tables can be used for purposes other than access maps. >> >> -- Noel Jones > > Noel, > > thanks for your advice. This really should be pointed out more explicitly in the documentation. > > As for 500, would it be a good practice to return 500, if the key, which in this case is the email-adress is not known at all? > > I also use a local_recipients_map, which already decides if a user exists or not. > So, which of the both is evaluated first? local_recipient_maps or smtpd_recipient_restrictions ? > > What would be the best practice for my case? > > Regards, > Philipp > Sorry for quoting my own mail, but there is one more question: I just implemented Noels suggestuons, and mail get rejected properly now. Thanks for that. But I still get the odd warning: read TCP map reply from localhost:1337: unexpected EOF (Success) log entry. Is there missing anything? Regards, Philipp
From: Phil Howard on 8 Jul 2010 13:44 On Thu, Jul 8, 2010 at 13:13, Philipp Leusmann <philipp.leusmann(a)rwth-aachen.de> wrote: > But I still get the odd > > warning: read TCP map reply from localhost:1337: unexpected EOF (Success) > > log entry. Is there missing anything? I gather from the documentation the connection is maintained for more requests. If your server disconnects after each request is answered, that would explain it. A persistent connection in a high traffic system would make sense to me. -- sHiFt HaPpEnS!
|
Next
|
Last
Pages: 1 2 3 4 Prev: SASL Authentication per recipient domain Next: Selective outbound relaying II |