Thanks,
That worked for me.
Jonathan Feally wrote:
I have tried playing with the settings, but setting the flag at all
seems to also effect the blocking on the rx, tx streams. It does work
fine with out touching the flags at all, so there must be something
that is being missed here.
So the fix for now is to comment out
the 2 fcntl lines in select_and_accept or i guess you could run
dbmail-imap through inetd with the -n option.
-Jon
Jonathan Feally wrote:
I have narrowed it down to the select_and_accept function in
serverchild.c
I can get the daemon to work just fine when I comment out the setting
and the unsetting of the O_NONBLOCK flags on the connection.
I'll see If I can figure out what the problem is. man 2 accept show
that the O_NONBLOCK flag will be inheirited so perhaps its already
set and we are unsetting it and resetting it (backwards). 2.1.6 did
not even have this function - it just accept()'ed the connection and
moved on.
If I am reading this right - the reason we are playing with the flag
is to avoid having a child getting stuck on an accept block when
someone connects and then disconnects the tcp connection before a
child has accpeted the conn. So this is to prevent DOS for the most
part.
-Jon
Jonathan Feally wrote:
Hello,
I have a FreeBSD box that is already running dbmail 2.1.x against a
mysql db - client and server is 5.0.21.
I am trying to get it up to 2.2.0 rc2 with libSieve - and I can
compile it just fine.
The daemon starts. And all looks good in the logs.
When I try to connect to the imap server it goes boom.
Launching daemon
Nov 11 14:16:53 hammer01 dbmail/imap4d[52325]: Debug:[serverparent]
serverparent.c,LoadServerConfig(+236): server will create [1] children
Nov 11 14:16:53 hammer01 dbmail/imap4d[52325]: Debug:[serverparent]
serverparent.c,LoadServerConfig(+249): children will make max.
[10000] connections
Nov 11 14:16:53 hammer01 dbmail/imap4d[52325]: Debug:[serverparent]
serverparent.c,LoadServerConfig(+262): timeout [4500] seconds
Nov 11 14:16:53 hammer01 dbmail/imap4d[52325]: Debug:[serverparent]
serverparent.c,LoadServerConfig(+267): no value for SOCKET in config
file
Nov 11 14:16:53 hammer01 dbmail/imap4d[52325]: Debug:[serverparent]
serverparent.c,LoadServerConfig(+270): socket []
Nov 11 14:16:53 hammer01 dbmail/imap4d[52325]: Debug:[serverparent]
serverparent.c,LoadServerConfig(+282): binding to PORT [143]
Nov 11 14:16:53 hammer01 dbmail/imap4d[52325]: Debug:[serverparent]
serverparent.c,LoadServerConfig(+298): binding to IP [x.x.x.x]
Nov 11 14:16:53 hammer01 dbmail/imap4d[52325]: Debug:[serverparent]
serverparent.c,LoadServerConfig(+305): no value for BACKLOG in
config file. Using default value [16]
Nov 11 14:16:53 hammer01 dbmail/imap4d[52325]: Debug:[serverparent]
serverparent.c,LoadServerConfig(+319): resolving client IP
Nov 11 14:16:53 hammer01 dbmail/imap4d[52325]: Debug:[serverparent]
serverparent.c,LoadServerConfig(+333): Disabling IMAP-before-SMTP
Nov 11 14:16:53 hammer01 dbmail/imap4d[52325]: Debug:[serverparent]
serverparent.c,LoadServerConfig(+345): effective user shall be [nobody]
Nov 11 14:16:53 hammer01 dbmail/imap4d[52325]: Debug:[serverparent]
serverparent.c,LoadServerConfig(+357): effective group shall be
[nogroup]
Nov 11 14:16:53 hammer01 dbmail/imap4d[52325]: Debug:[serverparent]
serverparent.c,LoadServerConfig(+369): will maintain minimum of [1]
spare children in reserve
Nov 11 14:16:53 hammer01 dbmail/imap4d[52325]: Debug:[serverparent]
serverparent.c,LoadServerConfig(+381): will maintain maximum of [1]
spare children in reserve
Nov 11 14:16:53 hammer01 dbmail/imap4d[52325]: Debug:[serverparent]
serverparent.c,LoadServerConfig(+393): will allow maximum of [1]
children
Nov 11 14:16:53 hammer01 dbmail/imap4d[52327]: Debug:[server]
server.c,server_daemonize(+198): sid: [52326]
Nov 11 14:16:53 hammer01 dbmail/imap4d[52327]: Debug:[server]
pool.c,statefile_create(+589): Creating scoreboard at
[/var/run/dbmail-imapd.state].
Nov 11 14:16:53 hammer01 dbmail/imap4d[52327]: Debug:[server]
server.c,dm_socket(+334): done
Nov 11 14:16:53 hammer01 dbmail/imap4d[52327]: Debug:[server]
server.c,create_inet_socket(+404): creating socket on [x.x.x.x:143]
with backlog [16]
Nov 11 14:16:53 hammer01 dbmail/imap4d[52327]: Debug:[server]
server.c,dm_bind_and_listen(+354): done
Nov 11 14:16:53 hammer01 dbmail/imap4d[52328]: Debug:[db]
dbmodule.c,db_load_driver(+67): looking for mysql as
modules/.libs/libmysql.so
Nov 11 14:16:53 hammer01 dbmail/imap4d[52328]: Info:[db]
dbmodule.c,db_load_driver(+71): cannot load Cannot open
"modules/.libs/libmysql.so"
Nov 11 14:16:54 hammer01 dbmail/imap4d[52328]: Debug:[db]
dbmodule.c,db_load_driver(+67): looking for mysql as
/usr/local/lib/dbmail/libmysql.so
Nov 11 14:16:54 hammer01 dbmail/imap4d[52328]: Debug:[sql]
dbmysql.c,db_query(+286): query [SHOW VARIABLES LIKE 'collation_%']
Nov 11 14:16:54 hammer01 dbmail/imap4d[52328]: Debug:[sql]
dbmysql.c,db_mysql_check_collations(+116): does
[collation_database:latin1_swedish_ci] match
[collation_connection:latin1_swedish_ci]?
Nov 11 14:16:54 hammer01 dbmail/imap4d[52328]: Debug:[sql]
dbmysql.c,db_query(+286): query [SELECT 1=1 FROM dbmail_physmessage
LIMIT 1 OFFSET 0]
Nov 11 14:16:54 hammer01 dbmail/imap4d[52328]: Debug:[sql]
dbmysql.c,db_query(+286): query [SELECT 1=1 FROM dbmail_headervalue
LIMIT 1 OFFSET 0]
Nov 11 14:16:54 hammer01 dbmail/imap4d[52328]: Debug:[sql]
dbmysql.c,db_query(+286): query [SELECT 1=1 FROM dbmail_envelope
LIMIT 1 OFFSET 0]
Nov 11 14:16:54 hammer01 dbmail/imap4d[52329]: Message:[server]
pool.c,child_register(+294): register child [52329]
Nov 11 14:16:54 hammer01 dbmail/imap4d[52329]: Info:[server]
pool.c,child_register(+319): initializing child_state [52329] using
slot [0]
Nov 11 14:16:54 hammer01 dbmail/imap4d[52329]: Info:[serverchild]
serverchild.c,CreateChild(+194): signal handler placed, going to
perform task now
Nov 11 14:16:54 hammer01 dbmail/imap4d[52329]: Debug:[db]
dbmodule.c,db_load_driver(+67): looking for mysql as
modules/.libs/libmysql.so
Nov 11 14:16:54 hammer01 dbmail/imap4d[52329]: Info:[db]
dbmodule.c,db_load_driver(+71): cannot load Cannot open
"modules/.libs/libmysql.so"
Nov 11 14:16:54 hammer01 dbmail/imap4d[52329]: Debug:[db]
dbmodule.c,db_load_driver(+67): looking for mysql as
/usr/local/lib/dbmail/libmysql.so
Nov 11 14:16:54 hammer01 dbmail/imap4d[52329]: Debug:[sql]
dbmysql.c,db_query(+286): query [SHOW VARIABLES LIKE 'collation_%']
Nov 11 14:16:54 hammer01 dbmail/imap4d[52329]: Debug:[sql]
dbmysql.c,db_mysql_check_collations(+116): does
[collation_database:latin1_swedish_ci] match
[collation_connection:latin1_swedish_ci]?
Nov 11 14:16:54 hammer01 dbmail/imap4d[52329]: Debug:[auth]
authmodule.c,auth_load_driver(+63): looking for auth_sql as
modules/.libs/libauth_sql.so
Nov 11 14:16:54 hammer01 dbmail/imap4d[52329]: Info:[auth]
authmodule.c,auth_load_driver(+67): cannot load Cannot open
"modules/.libs/libauth_sql.so"
Nov 11 14:16:54 hammer01 dbmail/imap4d[52329]: Debug:[auth]
authmodule.c,auth_load_driver(+63): looking for auth_sql as
/usr/local/lib/dbmail/libauth_sql.so
Nov 11 14:16:54 hammer01 dbmail/imap4d[52329]: Info:[serverchild]
serverchild.c,select_and_accept(+223): waiting for connection
Nov 11 14:16:54 hammer01 dbmail/imap4d[52328]: Message:[server]
pool.c,scoreboard_state(+527): Scoreboard state: children [1/1],
spares [1 (1 - 1)]
Nov 11 14:16:54 hammer01 dbmail/imap4d[52328]: Debug:[server]
server.c,StartServer(+131): starting main service loop
When trying to connect to the imap server dbmail.err shows:
Info:[serverchild] serverchild.c,select_and_accept(+255): received
connection
Info:[serverchild] serverchild.c,select_and_accept(+282): connection
accepted
Message:[serverchild] serverchild.c,PerformChildTask(+346): incoming
connection from [y.y.y.y (host.domain.com)] by pid [52329]
Debug:[serverchild] serverchild.c,PerformChildTask(+372): client
info init complete, calling client handler
Debug:[imapsession]
dbmail-imapsession.c,dbmail_imap_session_printf(+1301): RESPONSE: [*
OK dbmail imap (protocol version 4r1) server 2.2 ready to run
]
Debug:[imapsession]
dbmail-imapsession.c,dbmail_imap_session_printf(+1301): RESPONSE: [*
BYE error reading command
]
Debug:[serverchild] serverchild.c,PerformChildTask(+377): client
handling complete, closing streams
Info:[serverchild] serverchild.c,PerformChildTask(+379): connection
closed
Info:[serverchild] serverchild.c,select_and_accept(+223): waiting
for connection
While the telnet session shows
* OK dbmail imap (protocol version 4r1) server 2.2 ready to run
* BYE error reading command
Connection to host lost.
POP3 does similar thing with showing banner and closing connection.
Anybody have a clue on this?
I have tried it with out libsieve as well. But made no difference.
-Jon
_______________________________________________
DBmail mailing list
DBmail@dbmail.org
https://mailman.fastxs.nl/mailman/listinfo/dbmail
_______________________________________________
DBmail mailing list
DBmail@dbmail.org
https://mailman.fastxs.nl/mailman/listinfo/dbmail
_______________________________________________
DBmail mailing list
DBmail@dbmail.org
https://mailman.fastxs.nl/mailman/listinfo/dbmail