Howdy. I was in the process of turning up a new dbmail install when I
ran into a rather large problem. When I upload more than two messages
from my local inbox onto the server via IMAP, the server spins in a
tight loop and runs forever, which is something of a problem when I
want to mass-migrate people from cyrus to dbmail via imap.
The problem seems to be that db_get_msgflag() and db_get_main_header()
are getting called over and over, courtesy of _ic_fetch().
Below is a snippet of a log (trace level 5) with syslog bits removed.
The first time this happened, I generated roughly 500GB of log data
before I caught onto what was happening. Anyway, it looks like a loop
condition isn't being satisfied or whatever the variable is that
satisfies the condition, isn't being set. As I've said, I can
reproduce this 100% of the time and it acts as quite the nice DoS. :)
I'm not adverse to attaching gdb to the backend or running with
patches. I personally prefer to run with CVS HEAD once I become
familiar with a piece of software. Anyway, thanks. -sc
SQL Log file:
[EMAIL PROTECTED]: [local] 74227 2004-11-05 11:45:47 PST LOG:
statement: SELECT message_idnr FROM dbmail_messages WHERE mailbox_idnr
= '1' AND status < '2' AND unique_id!='' AND recent_flag=1
[EMAIL PROTECTED]: [local] 74227 2004-11-05 11:45:47 PST LOG:
duration: 0.911 ms
[EMAIL PROTECTED]: [local] 74227 2004-11-05 11:45:47 PST LOG:
statement: SELECT block.messageblk FROM dbmail_messageblks block,
dbmail_messages msg WHERE block.physmessage_id = msg.physmessage_
id AND msg.message_idnr = '120' ORDER BY block.messageblk_idnr
[EMAIL PROTECTED]: [local] 74227 2004-11-05 11:45:47 PST LOG:
duration: 1.035 ms
[EMAIL PROTECTED]: [local] 74227 2004-11-05 11:45:47 PST LOG:
statement: SELECT block.messageblk FROM dbmail_messageblks block,
dbmail_messages msg WHERE block.physmessage_id = msg.physmessage_
id AND msg.message_idnr = '121' ORDER BY block.messageblk_idnr
[EMAIL PROTECTED]: [local] 74227 2004-11-05 11:45:47 PST LOG:
duration: 1.076 ms
[EMAIL PROTECTED]: [local] 74227 2004-11-05 11:45:47 PST LOG:
statement: SELECT block.messageblk FROM dbmail_messageblks block,
dbmail_messages msg WHERE block.physmessage_id = msg.physmessage_
id AND msg.message_idnr = '122' ORDER BY block.messageblk_idnr
[EMAIL PROTECTED]: [local] 74227 2004-11-05 11:45:47 PST LOG:
duration: 1.074 ms
[EMAIL PROTECTED]: [local] 74227 2004-11-05 11:45:47 PST LOG:
statement: SELECT block.messageblk FROM dbmail_messageblks block,
dbmail_messages msg WHERE block.physmessage_id = msg.physmessage_
id AND msg.message_idnr = '123' ORDER BY block.messageblk_idnr
[EMAIL PROTECTED]: [local] 74227 2004-11-05 11:45:47 PST LOG:
duration: 1.098 ms
[EMAIL PROTECTED]: [local] 74227 2004-11-05 11:45:47 PST LOG:
statement: SELECT block.messageblk FROM dbmail_messageblks block,
dbmail_messages msg WHERE block.physmessage_id = msg.physmessage_
id AND msg.message_idnr = '124' ORDER BY block.messageblk_idnr
[EMAIL PROTECTED]: [local] 74227 2004-11-05 11:45:47 PST LOG:
duration: 1.057 ms
dbmail-imap log:
IMAPClientHandler(): line read for PID 74220
COMMAND: [2 CAPABILITY]
IMAPClientHandler(): Executing command capability...
IMAPClientHandler(): Finished command capability
IMAPClientHandler(): line read for PID 74220
COMMAND: [3 APPEND INBOX (\Seen) "05-Nov-2004 00:47:43 -0800" {4323}]
imaputil.c,build_args_array_ext: last char = }
build_args_array_ext(): got extra line []
arg[0]: 'INBOX'
arg[1]: '('
arg[2]: '\Seen'
arg[3]: ')'
arg[4]: '05-Nov-2004 00:47:43 -0800'
arg[5]: 'Return-Path: <[EMAIL PROTECTED]> Received: from
mail.example.com ([unix socket]) by mail.example.com (Cyrus v2.2.6)
with LMTPA; Fri, 05 Nov 2004 00:47:43 -0800 X-Sieve: CMU Sieve 2.2
Received: from localhost (localhost [127.0.0.1]) by mail.example.com
(Postfix) with ESMTP id C3F0BA1179 for <[EMAIL PROTECTED]>; Fri, 5
Nov 2004 00:47:42 -0800 (PST) Received: from mail.example.com
([127.0.0.1]) by localhost (mx1.example.com [127.0.0.1]) (amavisd-new,
port 10024) with LMTP id 37725-02-2 for <[EMAIL PROTECTED]>; Fri,
5 Nov 2004 00:47:41 -0800 (PST) Received: from elnino.fastxs.net
(twister.fastxs.net [213.214.98.20]) by mail.example.com (Postfix)
with ESMTP id 14633A1147 for <[EMAIL PROTECTED]>; Fri, 5 Nov 2004
00:47:40 -0800 (PST) Received: from elnino (localhost [127.0.0.1]) by
elnino.fastxs.net (Postfix) with ESMTP id DEAA91BECC; Fri, 5 Nov 2004
09:47:24 +0100 (CET) Received: from smtp-vbr14.xs4all.nl (smtp-v
IMAPClientHandler(): Executing command append...
db.c,db_findmailbox: looking for mailbox with FQN [INBOX].
dbpgsql.c,db_query: executing query [SELECT mailbox_idnr FROM
dbmail_mailboxes WHERE name='INBOX' AND owner_idnr='3']
ic_append(): mailbox [INBOX] found, id: 1
db.c,db_acl_has_right: checking ACL for user [3] on mailbox [1]
dbpgsql.c,db_query: executing query [SELECT mailbox_idnr FROM
dbmail_mailboxes WHERE mailbox_idnr = '1' AND owner_idnr = '3']
ic_append(): flag list found:
(
\Seen
)
imapcommands.c,_ic_append: Seen set
db.c,db_acl_has_right: checking ACL for user [3] on mailbox [1]
dbpgsql.c,db_query: executing query [SELECT mailbox_idnr FROM
dbmail_mailboxes WHERE mailbox_idnr = '1' AND owner_idnr = '3']
ic_append(): internal date [2004-11-05 00:47:43] found, next arg
[Return-Path: <[EMAIL PROTECTED]> Received: from
mail.example.com ([unix socket]) by mail.example.com (Cyrus v2.2.6)
with LMTPA; Fri, 05 Nov 2004 00:47:43 -0800 X-Sieve: CMU Sieve 2.2
Received: from localhost (localhost [127.0.0.1]) by mail.example.com
(Postfix) with ESMTP id C3F0BA1179 for <[EMAIL PROTECTED]>; Fri, 5
Nov 2004 00:47:42 -0800 (PST) Received: from mail.example.com
([127.0.0.1]) by localhost (mx1.example.com [127.0.0.1]) (amavisd-new,
port 10024) with LMTP id 37725-02-2 for <[EMAIL PROTECTED]>; Fri,
5 Nov 2004 00:47:41 -0800 (PST) Received: from elnino.fastxs.net
(twister.fastxs.net [213.214.98.20]) by mail.example.com (Postfix)
with ESMTP id 14633A1147 for <[EMAIL PROTECTED]>; Fri, 5 Nov 2004
00:47:40 -0800 (PST) Received: from elnino (localhost [127.0.0.1]) by
elnino.fastxs.net (Postfix) with ESMTP id DEAA91BECC; Fri, 5 Nov 2004
09:47:2
dbpgsql.c,db_query: executing query [SELECT 1 FROM dbmail_users WHERE
user_idnr = '3' AND (maxmail_size > 0) AND (curmail_size + '4234' >
maxmail_size)]
dbpgsql.c,db_query: executing query [INSERT INTO dbmail_physmessage
(messagesize, internal_date) VALUES ('0', TO_TIMESTAMP('2004-11-05
00:47:43', 'YYYY-MM-DD HH:MI:SS'))]
dbpgsql.c,db_query: executing query [SELECT
currval('dbmail_physmessage_id_seq')]
dbpgsql.c,db_query: executing query [INSERT INTO dbmail_messages
(mailbox_idnr, physmessage_id, unique_id, status,recent_flag) VALUES
('1', '56', '', '1', '1')]
dbpgsql.c,db_query: executing query [SELECT
currval('dbmail_message_idnr_seq')]
dbpgsql.c,db_query: executing query [INSERT INTO
dbmail_messageblks(messageblk,blocksize, physmessage_id) VALUES
('Return-Path: <[EMAIL PROTECTED]> Received: from
mail.example.com ([unix socket]) by mail.example.com (Cyrus v2.2.6)
with LMTPA; Fri, 05 Nov 2004 00:47:43 -0800 X-Sieve: CMU Sieve 2.2
Received: from localhost (localhost [127.0.0.1]) by mail.example.com
(Postfix) with ESMTP id C3F0BA1179 for <[EMAIL PROTECTED]>; Fri, 5
Nov 2004 00:47:42 -0800 (PST) Received: from mail.example.com
([127.0.0.1]) by localhost (mx1.example.com [127.0.0.1]) (amavisd-new,
port 10024) with LMTP id 37725-02-2 for <[EMAIL PROTECTED]>; Fri,
5 Nov 2004 00:47:41 -0800 (PST) Received: from elnino.fastxs.net
(twister.fastxs.net [213.214.98.20]) by mail.example.com (Postfix)
with ESMTP id 14633A1147 for <[EMAIL PROTECTED]>; Fri, 5 Nov 2004
00:47:40 -0800 (PST) Received: from elnino (localhost [127.0.0.1]) by
elnino.fastxs.net (Postfix) wi
dbpgsql.c,db_query: executing query [SELECT
currval('dbmail_messageblk_idnr_seq')]
dbpgsql.c,db_query: executing query [INSERT INTO
dbmail_messageblks(messageblk,blocksize, physmessage_id) VALUES ('
Aaron Stone wrote: > This might be important if you''re searching for
uncommon headers. Of > course, uncommon headers probably also mean that
they''re uncommonly > searched for... Don''t count on it. Offlineimap
is a common client for syncing imap-instances. It uses it''s own
header-type where both key and value are unique per message:
X-OfflineIMAP-901701146-4c6f63616c4d69726a616d-494e424f58:
1086726519-0790956581151 --
________________________________________________________________
Paul Stevens [EMAIL PROTECTED] NET
FACILITIES GROUP GPG/PGP: 1024D/11F8CD31 The
Netherlands_______________________________________www.nfg.nl
_______________________________________________ Dbmail-dev mailing list
[email protected]
http://twister.fastxs.net/mailman/listinfo/dbmail-dev ', '849', '56'
dbpgsql.c,db_query: executing query [SELECT
currval('dbmail_messageblk_idnr_seq')]
dbpgsql.c,db_query: executing query [UPDATE dbmail_physmessage SET
messagesize = '4234', rfcsize = '0' WHERE id = '56']
misc.c,create_unique_id: created: abc6c1fcce9742e35dd0fa76d6a9f62f
dbpgsql.c,db_query: executing query [UPDATE dbmail_messages SET
unique_id = 'abc6c1fcce9742e35dd0fa76d6a9f62f', status = '0' WHERE
message_idnr = '124']
db.c,db_add_quotum_used: adding 4234 to mailsize
db.c.user_idnr_is_delivery_user_idnr: looking up user_idnr for
[EMAIL PROTECTED]@__
dbpgsql.c,db_query: executing query [SELECT user_idnr FROM dbmail_users
WHERE userid='[EMAIL PROTECTED]@__']
dbpgsql.c,db_query: executing query [UPDATE dbmail_users SET
curmail_size = curmail_size + '4234' WHERE user_idnr = '3']
dbpgsql.c,db_free_result: trying to free a result set that is already
NULL!
dbpgsql.c,db_query: executing query [UPDATE dbmail_messages SET
seen_flag=1 WHERE message_idnr BETWEEN '124' AND '124' AND status < '2'
AND mailbox_idnr = '1']
IMAPClientHandler(): Finished command append
IMAPClientHandler(): line read for PID 74220
COMMAND: [4 EXAMINE INBOX]
arg[0]: 'INBOX'
IMAPClientHandler(): Executing command examine...
db.c,db_findmailbox: looking for mailbox with FQN [INBOX].
dbpgsql.c,db_query: executing query [SELECT mailbox_idnr FROM
dbmail_mailboxes WHERE name='INBOX' AND owner_idnr='3']
db.c,db_acl_has_right: checking ACL for user [3] on mailbox [1]
dbpgsql.c,db_query: executing query [SELECT mailbox_idnr FROM
dbmail_mailboxes WHERE mailbox_idnr = '1' AND owner_idnr = '3']
dbpgsql.c,db_query: executing query [SELECT no_select FROM
dbmail_mailboxes WHERE mailbox_idnr = '1']
dbpgsql.c,db_query: executing query [SELECT
permission,seen_flag,answered_flag,deleted_flag,flagged_flag,recent_flag
,draft_flag FROM dbmail_mailboxes WHERE mailbox_idnr = '1']
dbpgsql.c,db_query: executing query [SELECT message_idnr, seen_flag,
recent_flag FROM dbmail_messages WHERE mailbox_idnr = '1' AND status <
'2' AND unique_id != '' ORDER BY message_idnr ASC]
dbpgsql.c,db_query: executing query [SELECT MAX(message_idnr) FROM
dbmail_messages WHERE unique_id != '']
IMAPClientHandler(): Finished command examine
IMAPClientHandler(): line read for PID 74220
COMMAND: [5 UID SEARCH RECENT HEADER MESSAGE-ID
<[EMAIL PROTECTED]>]
arg[0]: 'SEARCH'
arg[1]: 'RECENT'
arg[2]: 'HEADER'
arg[3]: 'MESSAGE-ID'
arg[4]: '<[EMAIL PROTECTED]>'
IMAPClientHandler(): Executing command uid...
db.c,db_acl_has_right: checking ACL for user [3] on mailbox [1]
dbpgsql.c,db_query: executing query [SELECT mailbox_idnr FROM
dbmail_mailboxes WHERE mailbox_idnr = '1' AND owner_idnr = '3']
dbpgsql.c,db_query: executing query [SELECT block.messageblk FROM
dbmail_messageblks block, dbmail_messages msg WHERE
block.physmessage_id = msg.physmessage_id AND msg.message_idnr = '120'
ORDER BY block.messageblk_idnr]
db_start_msg(): starting, stopbound: '<null>'
mime_readheader(): entering mime loop
mime_readheader(): found double newline; header size: 60 lines
db_start_msg(): found singlepart msg
dbmsgbuf.c,db_update_msgbuf: update msgbuf_buf updating 131072, 3700,
583, 583
dbmsgbuf.c,db_update_msgbuf: update msgbuf: entire fit
dbmsgbuf.c,db_update_msgbuf update msgbuf succes NOMORE
db_start_msg(): exit
dbpgsql.c,db_query: executing query [SELECT block.messageblk FROM
dbmail_messageblks block, dbmail_messages msg WHERE
block.physmessage_id = msg.physmessage_id AND msg.message_idnr = '121'
ORDER BY block.messageblk_idnr]
db_start_msg(): starting, stopbound: '<null>'
mime_readheader(): entering mime loop
mime_readheader(): found double newline; header size: 62 lines
db_start_msg(): found singlepart msg
dbmsgbuf.c,db_update_msgbuf: update msgbuf_buf updating 131072, 4835,
1694, 1694
dbmsgbuf.c,db_update_msgbuf: update msgbuf: entire fit
dbmsgbuf.c,db_update_msgbuf update msgbuf succes NOMORE
db_start_msg(): exit
dbpgsql.c,db_query: executing query [SELECT block.messageblk FROM
dbmail_messageblks block, dbmail_messages msg WHERE
block.physmessage_id = msg.physmessage_id AND msg.message_idnr = '122'
ORDER BY block.messageblk_idnr]
db_start_msg(): starting, stopbound: '<null>'
mime_readheader(): entering mime loop
mime_readheader(): found double newline; header size: 56 lines
db_start_msg(): found singlepart msg
dbmsgbuf.c,db_update_msgbuf: update msgbuf_buf updating 131072, 4814,
1867, 1867
dbmsgbuf.c,db_update_msgbuf: update msgbuf: entire fit
dbmsgbuf.c,db_update_msgbuf update msgbuf succes NOMORE
db_start_msg(): exit
dbpgsql.c,db_query: executing query [SELECT block.messageblk FROM
dbmail_messageblks block, dbmail_messages msg WHERE
block.physmessage_id = msg.physmessage_id AND msg.message_idnr = '123'
ORDER BY block.messageblk_idnr]
db_start_msg(): starting, stopbound: '<null>'
mime_readheader(): entering mime loop
mime_readheader(): found double newline; header size: 54 lines
db_start_msg(): found singlepart msg
dbmsgbuf.c,db_update_msgbuf: update msgbuf_buf updating 131072, 4086,
1399, 1399
dbmsgbuf.c,db_update_msgbuf: update msgbuf: entire fit
dbmsgbuf.c,db_update_msgbuf update msgbuf succes NOMORE
db_start_msg(): exit
dbpgsql.c,db_query: executing query [SELECT block.messageblk FROM
dbmail_messageblks block, dbmail_messages msg WHERE
block.physmessage_id = msg.physmessage_id AND msg.message_idnr = '124'
ORDER BY block.messageblk_idnr]
db_start_msg(): starting, stopbound: '<null>'
mime_readheader(): entering mime loop
mime_readheader(): found double newline; header size: 67 lines
db_start_msg(): found singlepart msg
dbmsgbuf.c,db_update_msgbuf: update msgbuf_buf updating 131072, 4234,
849, 849
dbmsgbuf.c,db_update_msgbuf: update msgbuf: entire fit
dbmsgbuf.c,db_update_msgbuf update msgbuf succes NOMORE
db_start_msg(): exit
dbpgsql.c,db_query: executing query [SELECT message_idnr FROM
dbmail_messages WHERE mailbox_idnr = '1' AND status < '2' AND
unique_id!='' AND recent_flag=1]
IMAPClientHandler(): Finished command uid
IMAPClientHandler(): line read for PID 74220
COMMAND: [6 APPEND INBOX (\Seen) "05-Nov-2004 02:05:06 -0800" {3976}]
imaputil.c,build_args_array_ext: last char = }
build_args_array_ext(): got extra line []
arg[0]: 'INBOX'
arg[1]: '('
arg[2]: '\Seen'
arg[3]: ')'
arg[4]: '05-Nov-2004 02:05:06 -0800'
arg[5]: 'Return-Path: <[EMAIL PROTECTED]> Received: from
mail.example.com ([unix socket]) by mail.example.com (Cyrus v2.2.6)
with LMTPA; Fri, 05 Nov 2004 02:05:06 -0800 X-Sieve: CMU Sieve 2.2
Received: from localhost (localhost [127.0.0.1]) by mail.example.com
(Postfix) with ESMTP id F0946A1045 for <[EMAIL PROTECTED]>; Fri, 5
Nov 2004 02:05:05 -0800 (PST) Received: from mail.example.com
([127.0.0.1]) by localhost (mx1.example.com [127.0.0.1]) (amavisd-new,
port 10024) with LMTP id 44654-04 for <[EMAIL PROTECTED]>; Fri, 5
Nov 2004 02:05:04 -0800 (PST) Received: from elnino.fastxs.net
(twister.fastxs.net [213.214.98.20]) by mail.example.com (Postfix)
with ESMTP id 21335A1041 for <[EMAIL PROTECTED]>; Fri, 5 Nov 2004
02:05:03 -0800 (PST) Received: from elnino (localhost [127.0.0.1]) by
elnino.fastxs.net (Postfix) with ESMTP id 979901BD8B; Fri, 5 Nov 2004
11:04:44 +0100 (CET) Received: from geht-schon.de (games.geht-schon
IMAPClientHandler(): Executing command append...
db.c,db_findmailbox: looking for mailbox with FQN [INBOX].
dbpgsql.c,db_query: executing query [SELECT mailbox_idnr FROM
dbmail_mailboxes WHERE name='INBOX' AND owner_idnr='3']
ic_append(): mailbox [INBOX] found, id: 1
db.c,db_acl_has_right: checking ACL for user [3] on mailbox [1]
dbpgsql.c,db_query: executing query [SELECT mailbox_idnr FROM
dbmail_mailboxes WHERE mailbox_idnr = '1' AND owner_idnr = '3']
ic_append(): flag list found:
(
\Seen
)
imapcommands.c,_ic_append: Seen set
db.c,db_acl_has_right: checking ACL for user [3] on mailbox [1]
dbpgsql.c,db_query: executing query [SELECT mailbox_idnr FROM
dbmail_mailboxes WHERE mailbox_idnr = '1' AND owner_idnr = '3']
ic_append(): internal date [2004-11-05 02:05:06] found, next arg
[Return-Path: <[EMAIL PROTECTED]> Received: from
mail.example.com ([unix socket]) by mail.example.com (Cyrus v2.2.6)
with LMTPA; Fri, 05 Nov 2004 02:05:06 -0800 X-Sieve: CMU Sieve 2.2
Received: from localhost (localhost [127.0.0.1]) by mail.example.com
(Postfix) with ESMTP id F0946A1045 for <[EMAIL PROTECTED]>; Fri, 5
Nov 2004 02:05:05 -0800 (PST) Received: from mail.example.com
([127.0.0.1]) by localhost (mx1.example.com [127.0.0.1]) (amavisd-new,
port 10024) with LMTP id 44654-04 for <[EMAIL PROTECTED]>; Fri, 5
Nov 2004 02:05:04 -0800 (PST) Received: from elnino.fastxs.net
(twister.fastxs.net [213.214.98.20]) by mail.example.com (Postfix)
with ESMTP id 21335A1041 for <[EMAIL PROTECTED]>; Fri, 5 Nov 2004
02:05:03 -0800 (PST) Received: from elnino (localhost [127.0.0.1]) by
elnino.fastxs.net (Postfix) with ESMTP id 979901BD8B; Fri, 5 Nov 2004
11:04:44 +
dbpgsql.c,db_query: executing query [SELECT 1 FROM dbmail_users WHERE
user_idnr = '3' AND (maxmail_size > 0) AND (curmail_size + '3889' >
maxmail_size)]
dbpgsql.c,db_query: executing query [INSERT INTO dbmail_physmessage
(messagesize, internal_date) VALUES ('0', TO_TIMESTAMP('2004-11-05
02:05:06', 'YYYY-MM-DD HH:MI:SS'))]
dbpgsql.c,db_query: executing query [SELECT
currval('dbmail_physmessage_id_seq')]
dbpgsql.c,db_query: executing query [INSERT INTO dbmail_messages
(mailbox_idnr, physmessage_id, unique_id, status,recent_flag) VALUES
('1', '57', '', '1', '1')]
dbpgsql.c,db_query: executing query [SELECT
currval('dbmail_message_idnr_seq')]
dbpgsql.c,db_query: executing query [INSERT INTO
dbmail_messageblks(messageblk,blocksize, physmessage_id) VALUES
('Return-Path: <[EMAIL PROTECTED]> Received: from
mail.example.com ([unix socket]) by mail.example.com (Cyrus v2.2.6)
with LMTPA; Fri, 05 Nov 2004 02:05:06 -0800 X-Sieve: CMU Sieve 2.2
Received: from localhost (localhost [127.0.0.1]) by mail.example.com
(Postfix) with ESMTP id F0946A1045 for <[EMAIL PROTECTED]>; Fri, 5
Nov 2004 02:05:05 -0800 (PST) Received: from mail.example.com
([127.0.0.1]) by localhost (mx1.example.com [127.0.0.1]) (amavisd-new,
port 10024) with LMTP id 44654-04 for <[EMAIL PROTECTED]>; Fri, 5
Nov 2004 02:05:04 -0800 (PST) Received: from elnino.fastxs.net
(twister.fastxs.net [213.214.98.20]) by mail.example.com (Postfix)
with ESMTP id 21335A1041 for <[EMAIL PROTECTED]>; Fri, 5 Nov 2004
02:05:03 -0800 (PST) Received: from elnino (localhost [127.0.0.1]) by
elnino.fastxs.net (Postfix) with
dbpgsql.c,db_query: executing query [SELECT
currval('dbmail_messageblk_idnr_seq')]
dbpgsql.c,db_query: executing query [INSERT INTO
dbmail_messageblks(messageblk,blocksize, physmessage_id) VALUES ('Hi
Paul, > >This might be important if you''re searching for uncommon
headers. Of > >course, uncommon headers probably also mean that
they''re uncommonly > >searched for... > > Don''t count on it.
Offlineimap is a common client for syncing > imap-instances. It uses
it''s own header-type where both key and value are > unique per
message: > >
X-OfflineIMAP-901701146-4c6f63616c4d69726a616d-494e424f58: >
1086726519-0790956581151 Searches for p.e. X-Spam-Status are quite
common too. Aaron: more returned rows make a real difference if the
imapd and database are on different hosts. The point I don''t see in
this discussion is: where is the problem using the is_header column
even if that requires running a script or program in the 2.0 series?
The database structure stays the same, people don''t need to change any
software, they can switch between old and
dbpgsql.c,db_query: executing query [SELECT
currval('dbmail_messageblk_idnr_seq')]
dbpgsql.c,db_query: executing query [UPDATE dbmail_physmessage SET
messagesize = '3889', rfcsize = '0' WHERE id = '57']
misc.c,create_unique_id: created: c83ba014b978f69158c32de62e627bb5
dbpgsql.c,db_query: executing query [UPDATE dbmail_messages SET
unique_id = 'c83ba014b978f69158c32de62e627bb5', status = '0' WHERE
message_idnr = '125']
db.c,db_add_quotum_used: adding 3889 to mailsize
db.c.user_idnr_is_delivery_user_idnr: no need to look up user_idnr for
[EMAIL PROTECTED]@__
dbpgsql.c,db_query: executing query [UPDATE dbmail_users SET
curmail_size = curmail_size + '3889' WHERE user_idnr = '3']
dbpgsql.c,db_free_result: trying to free a result set that is already
NULL!
dbpgsql.c,db_query: executing query [UPDATE dbmail_messages SET
seen_flag=1 WHERE message_idnr BETWEEN '125' AND '125' AND status < '2'
AND mailbox_idnr = '1']
IMAPClientHandler(): Finished command append
IMAPClientHandler(): line read for PID 74220
COMMAND: [7 UID SEARCH RECENT HEADER MESSAGE-ID
<[EMAIL PROTECTED]>]
arg[0]: 'SEARCH'
arg[1]: 'RECENT'
arg[2]: 'HEADER'
arg[3]: 'MESSAGE-ID'
arg[4]: '<[EMAIL PROTECTED]>'
IMAPClientHandler(): Executing command uid...
db.c,db_acl_has_right: checking ACL for user [3] on mailbox [1]
dbpgsql.c,db_query: executing query [SELECT mailbox_idnr FROM
dbmail_mailboxes WHERE mailbox_idnr = '1' AND owner_idnr = '3']
dbpgsql.c,db_query: executing query [SELECT block.messageblk FROM
dbmail_messageblks block, dbmail_messages msg WHERE
block.physmessage_id = msg.physmessage_id AND msg.message_idnr = '120'
ORDER BY block.messageblk_idnr]
db_start_msg(): starting, stopbound: '<null>'
mime_readheader(): entering mime loop
mime_readheader(): found double newline; header size: 60 lines
db_start_msg(): found singlepart msg
dbmsgbuf.c,db_update_msgbuf: update msgbuf_buf updating 131072, 3700,
583, 583
dbmsgbuf.c,db_update_msgbuf: update msgbuf: entire fit
dbmsgbuf.c,db_update_msgbuf update msgbuf succes NOMORE
db_start_msg(): exit
dbpgsql.c,db_query: executing query [SELECT block.messageblk FROM
dbmail_messageblks block, dbmail_messages msg WHERE
block.physmessage_id = msg.physmessage_id AND msg.message_idnr = '121'
ORDER BY block.messageblk_idnr]
db_start_msg(): starting, stopbound: '<null>'
mime_readheader(): entering mime loop
mime_readheader(): found double newline; header size: 62 lines
db_start_msg(): found singlepart msg
dbmsgbuf.c,db_update_msgbuf: update msgbuf_buf updating 131072, 4835,
1694, 1694
dbmsgbuf.c,db_update_msgbuf: update msgbuf: entire fit
dbmsgbuf.c,db_update_msgbuf update msgbuf succes NOMORE
db_start_msg(): exit
dbpgsql.c,db_query: executing query [SELECT block.messageblk FROM
dbmail_messageblks block, dbmail_messages msg WHERE
block.physmessage_id = msg.physmessage_id AND msg.message_idnr = '122'
ORDER BY block.messageblk_idnr]
db_start_msg(): starting, stopbound: '<null>'
mime_readheader(): entering mime loop
mime_readheader(): found double newline; header size: 56 lines
db_start_msg(): found singlepart msg
dbmsgbuf.c,db_update_msgbuf: update msgbuf_buf updating 131072, 4814,
1867, 1867
dbmsgbuf.c,db_update_msgbuf: update msgbuf: entire fit
dbmsgbuf.c,db_update_msgbuf update msgbuf succes NOMORE
db_start_msg(): exit
dbpgsql.c,db_query: executing query [SELECT block.messageblk FROM
dbmail_messageblks block, dbmail_messages msg WHERE
block.physmessage_id = msg.physmessage_id AND msg.message_idnr = '123'
ORDER BY block.messageblk_idnr]
db_start_msg(): starting, stopbound: '<null>'
mime_readheader(): entering mime loop
mime_readheader(): found double newline; header size: 54 lines
db_start_msg(): found singlepart msg
dbmsgbuf.c,db_update_msgbuf: update msgbuf_buf updating 131072, 4086,
1399, 1399
dbmsgbuf.c,db_update_msgbuf: update msgbuf: entire fit
dbmsgbuf.c,db_update_msgbuf update msgbuf succes NOMORE
db_start_msg(): exit
dbpgsql.c,db_query: executing query [SELECT block.messageblk FROM
dbmail_messageblks block, dbmail_messages msg WHERE
block.physmessage_id = msg.physmessage_id AND msg.message_idnr = '124'
ORDER BY block.messageblk_idnr]
db_start_msg(): starting, stopbound: '<null>'
mime_readheader(): entering mime loop
mime_readheader(): found double newline; header size: 67 lines
db_start_msg(): found singlepart msg
dbmsgbuf.c,db_update_msgbuf: update msgbuf_buf updating 131072, 4234,
849, 849
dbmsgbuf.c,db_update_msgbuf: update msgbuf: entire fit
dbmsgbuf.c,db_update_msgbuf update msgbuf succes NOMORE
db_start_msg(): exit
dbpgsql.c,db_query: executing query [SELECT message_idnr FROM
dbmail_messages WHERE mailbox_idnr = '1' AND status < '2' AND
unique_id!='' AND recent_flag=1]
dbpgsql.c,db_query: executing query [SELECT block.messageblk FROM
dbmail_messageblks block, dbmail_messages msg WHERE
block.physmessage_id = msg.physmessage_id AND msg.message_idnr = '120'
ORDER BY block.messageblk_idnr]
db_start_msg(): starting, stopbound: '<null>'
mime_readheader(): entering mime loop
mime_readheader(): found double newline; header size: 60 lines
db_start_msg(): found singlepart msg
dbmsgbuf.c,db_update_msgbuf: update msgbuf_buf updating 131072, 3700,
583, 583
dbmsgbuf.c,db_update_msgbuf: update msgbuf: entire fit
dbmsgbuf.c,db_update_msgbuf update msgbuf succes NOMORE
db_start_msg(): exit
dbpgsql.c,db_query: executing query [SELECT block.messageblk FROM
dbmail_messageblks block, dbmail_messages msg WHERE
block.physmessage_id = msg.physmessage_id AND msg.message_idnr = '121'
ORDER BY block.messageblk_idnr]
db_start_msg(): starting, stopbound: '<null>'
mime_readheader(): entering mime loop
mime_readheader(): found double newline; header size: 62 lines
db_start_msg(): found singlepart msg
dbmsgbuf.c,db_update_msgbuf: update msgbuf_buf updating 131072, 4835,
1694, 1694
dbmsgbuf.c,db_update_msgbuf: update msgbuf: entire fit
dbmsgbuf.c,db_update_msgbuf update msgbuf succes NOMORE
db_start_msg(): exit
dbpgsql.c,db_query: executing query [SELECT block.messageblk FROM
dbmail_messageblks block, dbmail_messages msg WHERE
block.physmessage_id = msg.physmessage_id AND msg.message_idnr = '122'
ORDER BY block.messageblk_idnr]
db_start_msg(): starting, stopbound: '<null>'
mime_readheader(): entering mime loop
mime_readheader(): found double newline; header size: 56 lines
db_start_msg(): found singlepart msg
dbmsgbuf.c,db_update_msgbuf: update msgbuf_buf updating 131072, 4814,
1867, 1867
dbmsgbuf.c,db_update_msgbuf: update msgbuf: entire fit
dbmsgbuf.c,db_update_msgbuf update msgbuf succes NOMORE
db_start_msg(): exit
dbpgsql.c,db_query: executing query [SELECT block.messageblk FROM
dbmail_messageblks block, dbmail_messages msg WHERE
block.physmessage_id = msg.physmessage_id AND msg.message_idnr = '123'
ORDER BY block.messageblk_idnr]
db_start_msg(): starting, stopbound: '<null>'
mime_readheader(): entering mime loop
mime_readheader(): found double newline; header size: 54 lines
db_start_msg(): found singlepart msg
dbmsgbuf.c,db_update_msgbuf: update msgbuf_buf updating 131072, 4086,
1399, 1399
dbmsgbuf.c,db_update_msgbuf: update msgbuf: entire fit
dbmsgbuf.c,db_update_msgbuf update msgbuf succes NOMORE
db_start_msg(): exit
dbpgsql.c,db_query: executing query [SELECT block.messageblk FROM
dbmail_messageblks block, dbmail_messages msg WHERE
block.physmessage_id = msg.physmessage_id AND msg.message_idnr = '124'
ORDER BY block.messageblk_idnr]
db_start_msg(): starting, stopbound: '<null>'
mime_readheader(): entering mime loop
mime_readheader(): found double newline; header size: 67 lines
db_start_msg(): found singlepart msg
dbmsgbuf.c,db_update_msgbuf: update msgbuf_buf updating 131072, 4234,
849, 849
dbmsgbuf.c,db_update_msgbuf: update msgbuf: entire fit
dbmsgbuf.c,db_update_msgbuf update msgbuf succes NOMORE
db_start_msg(): exit
dbpgsql.c,db_query: executing query [SELECT message_idnr FROM
dbmail_messages WHERE mailbox_idnr = '1' AND status < '2' AND
unique_id!='' AND recent_flag=1]
dbpgsql.c,db_query: executing query [SELECT block.messageblk FROM
dbmail_messageblks block, dbmail_messages msg WHERE
block.physmessage_id = msg.physmessage_id AND msg.message_idnr = '120'
ORDER BY block.messageblk_idnr]
db_start_msg(): starting, stopbound: '<null>'
mime_readheader(): entering mime loop
mime_readheader(): found double newline; header size: 60 lines
db_start_msg(): found singlepart msg
dbmsgbuf.c,db_update_msgbuf: update msgbuf_buf updating 131072, 3700,
583, 583
dbmsgbuf.c,db_update_msgbuf: update msgbuf: entire fit
dbmsgbuf.c,db_update_msgbuf update msgbuf succes NOMORE
db_start_msg(): exit
dbpgsql.c,db_query: executing query [SELECT block.messageblk FROM
dbmail_messageblks block, dbmail_messages msg WHERE
block.physmessage_id = msg.physmessage_id AND msg.message_idnr = '121'
ORDER BY block.messageblk_idnr]
db_start_msg(): starting, stopbound: '<null>'
mime_readheader(): entering mime loop
mime_readheader(): found double newline; header size: 62 lines
db_start_msg(): found singlepart msg
dbmsgbuf.c,db_update_msgbuf: update msgbuf_buf updating 131072, 4835,
1694, 1694
dbmsgbuf.c,db_update_msgbuf: update msgbuf: entire fit
dbmsgbuf.c,db_update_msgbuf update msgbuf succes NOMORE
db_start_msg(): exit
dbpgsql.c,db_query: executing query [SELECT block.messageblk FROM
dbmail_messageblks block, dbmail_messages msg WHERE
block.physmessage_id = msg.physmessage_id AND msg.message_idnr = '122'
ORDER BY block.messageblk_idnr]
db_start_msg(): starting, stopbound: '<null>'
mime_readheader(): entering mime loop
mime_readheader(): found double newline; header size: 56 lines
db_start_msg(): found singlepart msg
dbmsgbuf.c,db_update_msgbuf: update msgbuf_buf updating 131072, 4814,
1867, 1867
dbmsgbuf.c,db_update_msgbuf: update msgbuf: entire fit
dbmsgbuf.c,db_update_msgbuf update msgbuf succes NOMORE
db_start_msg(): exit
dbpgsql.c,db_query: executing query [SELECT block.messageblk FROM
dbmail_messageblks block, dbmail_messages msg WHERE
block.physmessage_id = msg.physmessage_id AND msg.message_idnr = '123'
ORDER BY block.messageblk_idnr]
db_start_msg(): starting, stopbound: '<null>'
mime_readheader(): entering mime loop
mime_readheader(): found double newline; header size: 54 lines
db_start_msg(): found singlepart msg
dbmsgbuf.c,db_update_msgbuf: update msgbuf_buf updating 131072, 4086,
1399, 1399
dbmsgbuf.c,db_update_msgbuf: update msgbuf: entire fit
dbmsgbuf.c,db_update_msgbuf update msgbuf succes NOMORE
db_start_msg(): exit
dbpgsql.c,db_query: executing query [SELECT block.messageblk FROM
dbmail_messageblks block, dbmail_messages msg WHERE
block.physmessage_id = msg.physmessage_id AND msg.message_idnr = '124'
ORDER BY block.messageblk_idnr]
db_start_msg(): starting, stopbound: '<null>'
mime_readheader(): entering mime loop
mime_readheader(): found double newline; header size: 67 lines
db_start_msg(): found singlepart msg
dbmsgbuf.c,db_update_msgbuf: update msgbuf_buf updating 131072, 4234,
849, 849
dbmsgbuf.c,db_update_msgbuf: update msgbuf: entire fit
dbmsgbuf.c,db_update_msgbuf update msgbuf succes NOMORE
db_start_msg(): exit
dbpgsql.c,db_query: executing query [SELECT message_idnr FROM
dbmail_messages WHERE mailbox_idnr = '1' AND status < '2' AND
unique_id!='' AND recent_flag=1]
dbpgsql.c,db_query: executing query [SELECT block.messageblk FROM
dbmail_messageblks block, dbmail_messages msg WHERE
block.physmessage_id = msg.physmessage_id AND msg.message_idnr = '120'
ORDER BY block.messageblk_idnr]
db_start_msg(): starting, stopbound: '<null>'
mime_readheader(): entering mime loop
mime_readheader(): found double newline; header size: 60 lines
db_start_msg(): found singlepart msg
dbmsgbuf.c,db_update_msgbuf: update msgbuf_buf updating 131072, 3700,
583, 583
dbmsgbuf.c,db_update_msgbuf: update msgbuf: entire fit
dbmsgbuf.c,db_update_msgbuf update msgbuf succes NOMORE
db_start_msg(): exit
dbpgsql.c,db_query: executing query [SELECT block.messageblk FROM
dbmail_messageblks block, dbmail_messages msg WHERE
block.physmessage_id = msg.physmessage_id AND msg.message_idnr = '121'
ORDER BY block.messageblk_idnr]
db_start_msg(): starting, stopbound: '<null>'
mime_readheader(): entering mime loop
mime_readheader(): found double newline; header size: 62 lines
db_start_msg(): found singlepart msg
dbmsgbuf.c,db_update_msgbuf: update msgbuf_buf updating 131072, 4835,
1694, 1694
dbmsgbuf.c,db_update_msgbuf: update msgbuf: entire fit
dbmsgbuf.c,db_update_msgbuf update msgbuf succes NOMORE
db_start_msg(): exit
dbpgsql.c,db_query: executing query [SELECT block.messageblk FROM
dbmail_messageblks block, dbmail_messages msg WHERE
block.physmessage_id = msg.physmessage_id AND msg.message_idnr = '122'
ORDER BY block.messageblk_idnr]
db_start_msg(): starting, stopbound: '<null>'
mime_readheader(): entering mime loop
mime_readheader(): found double newline; header size: 56 lines
db_start_msg(): found singlepart msg
dbmsgbuf.c,db_update_msgbuf: update msgbuf_buf updating 131072, 4814,
1867, 1867
dbmsgbuf.c,db_update_msgbuf: update msgbuf: entire fit
dbmsgbuf.c,db_update_msgbuf update msgbuf succes NOMORE
db_start_msg(): exit
dbpgsql.c,db_query: executing query [SELECT block.messageblk FROM
dbmail_messageblks block, dbmail_messages msg WHERE
block.physmessage_id = msg.physmessage_id AND msg.message_idnr = '123'
ORDER BY block.messageblk_idnr]
db_start_msg(): starting, stopbound: '<null>'
mime_readheader(): entering mime loop
mime_readheader(): found double newline; header size: 54 lines
db_start_msg(): found singlepart msg
dbmsgbuf.c,db_update_msgbuf: update msgbuf_buf updating 131072, 4086,
1399, 1399
dbmsgbuf.c,db_update_msgbuf: update msgbuf: entire fit
dbmsgbuf.c,db_update_msgbuf update msgbuf succes NOMORE
db_start_msg(): exit
dbpgsql.c,db_query: executing query [SELECT block.messageblk FROM
dbmail_messageblks block, dbmail_messages msg WHERE
block.physmessage_id = msg.physmessage_id AND msg.message_idnr = '124'
ORDER BY block.messageblk_idnr]
db_start_msg(): starting, stopbound: '<null>'
mime_readheader(): entering mime loop
mime_readheader(): found double newline; header size: 67 lines
db_start_msg(): found singlepart msg
dbmsgbuf.c,db_update_msgbuf: update msgbuf_buf updating 131072, 4234,
849, 849
dbmsgbuf.c,db_update_msgbuf: update msgbuf: entire fit
dbmsgbuf.c,db_update_msgbuf update msgbuf succes NOMORE
db_start_msg(): exit
dbpgsql.c,db_query: executing query [SELECT message_idnr FROM
dbmail_messages WHERE mailbox_idnr = '1' AND status < '2' AND
unique_id!='' AND recent_flag=1]
dbpgsql.c,db_query: executing query [SELECT block.messageblk FROM
dbmail_messageblks block, dbmail_messages msg WHERE
block.physmessage_id = msg.physmessage_id AND msg.message_idnr = '120'
ORDER BY block.messageblk_idnr]
db_start_msg(): starting, stopbound: '<null>'
mime_readheader(): entering mime loop
mime_readheader(): found double newline; header size: 60 lines
db_start_msg(): found singlepart msg
dbmsgbuf.c,db_update_msgbuf: update msgbuf_buf updating 131072, 3700,
583, 583
dbmsgbuf.c,db_update_msgbuf: update msgbuf: entire fit
dbmsgbuf.c,db_update_msgbuf update msgbuf succes NOMORE
db_start_msg(): exit
--
Sean Chittenden