> That's unrelated. The envelope cache should always be 7bit clean. > Subjects should be utf7 encoded to begin with, and if they are not they > are utf7 encoded by dbmail during the construction of the imap envelope > string. There's no utf8 conversion done along the way. > > Could you provide me with a level5 log of such a message during > insertion, i.e. 'cat test.eml|dbmail-smtp -u myuser'. Or a relevant row > from the envelope table?
Yes, of couse: $ cat message From: [EMAIL PROTECTED] To: test.test Subject: проверка koi8-r текста Привет всем $ cat message | /usr/local/sbin/dbmail-smtp -u loe Debug module mysql file dbmysql.c func db_query line 272: query [SHOW VARIABLES LIKE 'collation_%'] Debug module mysql file dbmysql.c func db_mysql_check_collations line 113: does [collation_database:koi8r_general_ci] match [collation_connection:koi8r_general_ci]? Debug module mysql file dbmysql.c func db_query line 272: query [SELECT 1=1 FROM dbmail_physmessage LIMIT 1 OFFSET 0] Debug module mysql file dbmysql.c func db_query line 272: query [SELECT 1=1 FROM dbmail_headervalue LIMIT 1 OFFSET 0] Debug module mysql file dbmysql.c func db_query line 272: query [SELECT 1=1 FROM dbmail_envelope LIMIT 1 OFFSET 0] Debug dbmail-message.c,_set_content_from_stream: parse message Info dsn.c, dsnuser_resolve: checking if [loe] is a valid username, alias, or catchall. Debug authsql.c,auth_check_user_ext: checking user [loe] in alias table Debug authsql.c,auth_check_user_ext: checks [0] Debug module mysql file dbmysql.c func db_query line 272: query [SELECT deliver_to FROM dbmail_aliases WHERE lower(alias) = lower('loe') AND lower(alias) <> lower(deliver_to)] Debug authsql.c,auth_check_user_ext: user loe not in aliases table Debug dsn.c, address_has_alias: user [loe] found total of [0] aliases Debug module mysql file dbmysql.c func db_query line 272: query [SELECT user_idnr FROM dbmail_users WHERE lower(userid) = lower('loe')] Debug dsn.c, address_is_username: added user [loe] id [2] to delivery list Info dsn.c, dsnuser_resolve: delivering [loe] as a username. Debug module mysql file dbmysql.c func db_query line 272: query [BEGIN] Debug module mysql file dbmysql.c func db_query line 272: query [SELECT user_idnr FROM dbmail_users WHERE lower(userid) = lower('[EMAIL PROTECTED]@__')] Debug misc.c,create_unique_id: created: 701816680e98e05978e5c6bf568afa51 Debug module db file db.c func db_findmailbox line 2284: looking for mailbox with FQN [INBOX]. Debug module mysql file dbmysql.c func db_query line 272: query [SELECT mailbox_idnr FROM dbmail_mailboxes WHERE name LIKE 'INBOX' AND owner_idnr=1] Debug module db file db.c func db_find_create_mailbox line 3117: mailbox [INBOX] found Debug module mysql file dbmysql.c func db_query line 272: query [INSERT INTO dbmail_physmessage (messagesize, internal_date) VALUES (0, CURRENT_TIMESTAMP)] Debug module mysql file dbmysql.c func db_query line 272: query [INSERT INTO dbmail_messages(mailbox_idnr, physmessage_id, unique_id,recent_flag, status) VALUES (2, 35501, '701816680e98e05978e5c6bf568afa51', 1, 5)] Debug module mysql file dbmysql.c func db_query line 272: query [SELECT physmessage_id FROM dbmail_messages WHERE message_idnr = 73810] Debug module mysql file dbmysql.c func db_query line 272: query [INSERT INTO dbmail_messageblks (is_header, messageblk,blocksize, physmessage_id) VALUES (1,'From: [EMAIL PROTECTED]: test.test\nSubject: проверка koi8-r текста\nReturn-Path: [EMAIL PROTECTED]: 35501\nMessage-Id: <1162465177l.24931l.0l@(none)>\nMIME-Version: 1.0\n\n', 178, 35501)] Debug dbmail-message.c,dbmail_message_store: allocating [524288] bytes of memory for readblock Debug module delivery file pipe.c func store_message_in_blocks line 477: inserting message [Привет всем ] Debug module mysql file dbmysql.c func db_query line 272: query [SELECT physmessage_id FROM dbmail_messages WHERE message_idnr = 73810] Debug module mysql file dbmysql.c func db_query line 272: query [INSERT INTO dbmail_messageblks (is_header, messageblk,blocksize, physmessage_id) VALUES (0,'Привет всем\n', 12, 35501)] Debug module mysql file dbmysql.c func db_query line 272: query [UPDATE dbmail_messages SET unique_id = '701816680e98e05978e5c6bf568afa51', status = 0 WHERE message_idnr = 73810] Debug module mysql file dbmysql.c func db_query line 272: query [SELECT physmessage_id FROM dbmail_messages WHERE message_idnr = 73810] Debug module mysql file dbmysql.c func db_query line 272: query [UPDATE dbmail_physmessage SET messagesize = 190, rfcsize = 199 WHERE id = 35501] Debug module mysql file dbmysql.c func db_query line 272: query [SELECT dbmail_mailboxes.owner_idnr FROM dbmail_mailboxes, dbmail_messages WHERE dbmail_mailboxes.mailbox_idnr = dbmail_messages.mailbox_idnr AND dbmail_messages.message_idnr = 73810] Debug module db file db.c func user_idnr_is_delivery_user_idnr line 4298: looking up user_idnr for [EMAIL PROTECTED]@__] Debug module mysql file dbmysql.c func db_query line 272: query [SELECT user_idnr FROM dbmail_users WHERE lower(userid) = lower('[EMAIL PROTECTED]@__')] Debug module mysql file dbmysql.c func db_query line 272: query [SELECT id FROM dbmail_headername WHERE headername='From'] Debug module mysql file dbmysql.c func db_query line 272: query [INSERT INTO dbmail_headervalue (headername_id, physmessage_id, headervalue) VALUES (8,35501,'[EMAIL PROTECTED]')] Debug module mysql file dbmysql.c func db_query line 272: query [SELECT id FROM dbmail_headername WHERE headername='Subject'] Debug module mysql file dbmysql.c func db_query line 272: query [INSERT INTO dbmail_headervalue (headername_id, physmessage_id, headervalue) VALUES (6,35501,'ц┐б░ц┐б▓ц┐б▐ц┐б≈ц┐б┘ц┐б▓ц┐б▀ц┐б│ koi')] Debug module mysql file dbmysql.c func db_query line 272: query [SELECT id FROM dbmail_headername WHERE headername='To'] Debug module mysql file dbmysql.c func db_query line 272: query [INSERT INTO dbmail_headervalue (headername_id, physmessage_id, headervalue) VALUES (5,35501,'test.test')] Debug module mysql file dbmysql.c func db_query line 272: query [INSERT INTO dbmail_tofield (physmessage_id, toname, toaddr) VALUES (35501,'','test.test')] Debug module mysql file dbmysql.c func db_query line 272: query [INSERT INTO dbmail_fromfield (physmessage_id, fromname, fromaddr) VALUES (35501,'','[EMAIL PROTECTED]')] Debug module mysql file dbmysql.c func db_query line 272: query [INSERT INTO dbmail_datefield (physmessage_id, datefield) VALUES (35501,'1970-01-01 00:00:00')] Debug module mysql file dbmysql.c func db_query line 272: query [INSERT INTO dbmail_subjectfield (physmessage_id, subjectfield) VALUES (35501,'ц░ц▓ц▐ц≈ц┘ц▓ц▀ц│ koi8-')] Debug module misc file misc.c func dbmail_imap_append_alist_as_plist line 1845: handling a standard address [(null)] [EMAIL PROTECTED] Debug module misc file misc.c func dbmail_imap_append_alist_as_plist line 1845: handling a standard address [(null)] [EMAIL PROTECTED] Debug module misc file misc.c func dbmail_imap_append_alist_as_plist line 1845: handling a standard address [(null)] [EMAIL PROTECTED] Debug module misc file misc.c func dbmail_imap_append_alist_as_plist line 1845: handling a standard address [(null)] [test.test]. Debug module mysql file dbmysql.c func db_query line 272: query [INSERT INTO dbmail_envelope (physmessage_id, envelope) VALUES (35501,'(\"Thu, 01 Jan 1970 00:00:00 +0000\" \"koi8-r\" ((NIL NIL \"test\" \"test\")) ((NIL NIL \"test\" \"test\")) ((NIL NIL \"test\" \"test\")) ((NIL NIL \"test.test\" NIL)) NIL NIL NIL \"<1162465177l.24931l.0l@(none)>\")')] Debug module delivery file pipe.c func insert_messages line 547: temporary msgidnr is [73810] Debug module delivery file pipe.c func insert_messages line 570: calling sort_and_deliver for useridnr [2] Info module sort file sort.c func sort_and_deliver line 55: Destination [loe] useridnr [2], mailbox [(null)], source [4] Info misc.c, find_bounded: Found nothing between '+' and '@' Debug module mysql file dbmysql.c func db_query line 272: query [SELECT name FROM dbmail_sievescripts WHERE owner_idnr = 2 AND active = 1] Info module sort file sort.c func sort_and_deliver line 84: Calling for a Sieve sort Debug module sieve file sortsieve.c func sort_startup line 576: Sieve vacation enabled. Debug module sieve file sortsieve.c func sort_startup line 586: Sieve notify enabled. Debug module mysql file dbmysql.c func db_query line 272: query [SELECT name from dbmail_sievescripts where owner_idnr = 2 and active = 1] Info module sieve file sortsieve.c func sort_getscript line 339: Getting default script named [main] Debug module mysql file dbmysql.c func db_query line 272: query [SELECT script FROM dbmail_sievescripts WHERE owner_idnr = 2 AND name = 'main'] Info module sieve file sortsieve.c func sort_getheader line 375: Getting header [From] returning value [EMAIL PROTECTED] Info module sieve file sortsieve.c func sort_getheader line 375: Getting header [From] returning value [EMAIL PROTECTED] Info module sieve file sortsieve.c func sort_getheader line 375: Getting header [From] returning value [EMAIL PROTECTED] Info module sieve file sortsieve.c func sort_fileinto line 247: Action is FILEINTO: mailbox is [INBOX] Info module sort file sort.c func sort_deliver_to_mailbox line 136: useridnr [2] mailbox [INBOX] Debug module db file db.c func db_findmailbox line 2284: looking for mailbox with FQN [INBOX]. Debug module mysql file dbmysql.c func db_query line 272: query [SELECT mailbox_idnr FROM dbmail_mailboxes WHERE name LIKE 'INBOX' AND owner_idnr=2] Debug module db file db.c func db_find_create_mailbox line 3117: mailbox [INBOX] found Debug module sort file sort.c func sort_deliver_to_mailbox line 150: Checking if we have the right to post incoming messages Debug module mysql file dbmysql.c func db_query line 272: query [SELECT permission,seen_flag,answered_flag,deleted_flag,flagged_flag,recent_flag,draft_flag FROM dbmail_mailboxes WHERE mailbox_idnr = 1] Debug module db file db.c func db_acl_has_right line 3944: checking ACL [post_flag] for user [2] on mailbox [1] Debug module mysql file dbmysql.c func db_query line 272: query [SELECT owner_idnr FROM dbmail_mailboxes WHERE mailbox_idnr = 1] Debug module db file db.c func db_acl_has_right line 3954: mailbox [1] is owned by user [2], is that also [2]? Debug module db file db.c func db_acl_has_right line 3958: mailbox [1] is owned by user [2], giving all rights Info module sort file sort.c func sort_deliver_to_mailbox line 175: user [2] has right to deliver mail to [INBOX] Debug module mysql file dbmysql.c func db_query line 272: query [SELECT pm.messagesize FROM dbmail_physmessage pm, dbmail_messages msg WHERE pm.id = msg.physmessage_id AND message_idnr = 73810] Debug module mysql file dbmysql.c func db_query line 272: query [SELECT 1 FROM dbmail_users WHERE user_idnr = 2 AND (maxmail_size > 0) AND (curmail_size + 190 > maxmail_size)] Debug misc.c,create_unique_id: created: 8ea8d324cc86edfc4301225318bab4fe Debug module mysql file dbmysql.c func db_query line 272: query [INSERT INTO dbmail_messages (mailbox_idnr,physmessage_id, seen_flag, answered_flag, deleted_flag, flagged_flag, recent_flag, draft_flag, unique_id, status) SELECT 1, physmessage_id, seen_flag, answered_flag, deleted_flag, flagged_flag, recent_flag, draft_flag, '8ea8d324cc86edfc4301225318bab4fe', status FROM dbmail_messages WHERE message_idnr = 73810] Debug module db file db.c func user_idnr_is_delivery_user_idnr line 4308: no need to look up user_idnr for [EMAIL PROTECTED]@__] Debug module db file db.c func user_quotum_inc line 336: adding 190 to mailsize Debug module mysql file dbmysql.c func db_query line 272: query [UPDATE dbmail_users SET curmail_size = curmail_size + 190 WHERE user_idnr = 2] Message module sort file sort.c func sort_deliver_to_mailbox line 195: message id=73811, size=190 is inserted Info module sort file sort.c func sort_and_deliver line 109: Keep was cancelled. Message may be discarded. Info module delivery file pipe.c func insert_messages line 577: successful sort_and_deliver for useridnr [2] Debug module delivery file pipe.c func execute_auto_ran line 419: starting auto-notification procedure Debug module mysql file dbmysql.c func db_query line 272: query [SELECT notify_address FROM dbmail_auto_notifications WHERE user_idnr = 2] Debug module delivery file pipe.c func execute_auto_ran line 425: no notification address specified, skipping Debug module delivery file pipe.c func execute_auto_ran line 439: starting auto-reply procedure Debug module mysql file dbmysql.c func db_query line 272: query [SELECT reply_body FROM dbmail_auto_replies WHERE user_idnr = 2 AND (start_date IS NULL OR start_date <= CURRENT_TIMESTAMP) AND (stop_date IS NULL OR stop_date >= CURRENT_TIMESTAMP)] Debug module delivery file pipe.c func execute_auto_ran line 445: no reply body specified, skipping Debug module delivery file pipe.c func insert_messages line 636: deliver [0] messages to external addresses Debug module mysql file dbmysql.c func db_query line 272: query [SELECT physmessage_id FROM dbmail_messages WHERE message_idnr = 73810] Debug module mysql file dbmysql.c func db_query line 272: query [DELETE FROM dbmail_messages WHERE message_idnr = 73810] Debug module mysql file dbmysql.c func db_query line 272: query [SELECT message_idnr FROM dbmail_messages WHERE physmessage_id = 35501] Debug module delivery file pipe.c func insert_messages line 658: temporary message deleted from database. Done. Debug module mysql file dbmysql.c func db_query line 272: query [COMMIT] Debug dsn.c, dsnuser_free: dsnuser freed Debug module smtp file main.c func main line 384: they're all free. we're done. Debug module smtp file main.c func main line 392: exit code is [0]. -- Oleg Lapshin