krr> dbmail 2.0.7 krr> MySQL 4.1.14 INNODB krr> I've just created new `dbmail` database from krr> `create_tables_innoDB.mysql` file
krr> And did the following steps: krr> 1) Adding new user >> dbmail-users -a test -w testpwd krr> Opening connection to database... krr> Opening connection to authentication... krr> Ok. Connected krr> Adding user test with password type ,0 bytes mailbox limit and krr> clientid 0... Ok, user added id [3] krr> Adding INBOX for new user krr> Ok. added krr> Done krr> This created user_idnr=3 and mailbox mailbox_idnr=1 krr> 2) Sending test message >> dbmail-smtp -u test < 1msg krr> This created messageblk_idnr=1 and 2 krr> 3) Deleting user >> dbmail-users -d test krr> Opening connection to database... krr> Opening connection to authentication... krr> Ok. Connected krr> Deleting aliases for user [test]... krr> Done krr> Deleting user [test]... krr> Done krr> messageblk_idnr=1 and 2 stays on it's place ! krr> 4) Runnig dbmail-util to destroy messages of deleted user >> dbmail-util -tubpdr krr> Opening connection to database... krr> Opening connection to authentication... krr> Ok. Connected. krr> Repairing DBMAIL messageblocks integrity... krr> Ok. Found [0] unconnected messageblks. krr> Checking DBMAIL message integrity... krr> Ok. Found [0] unconnected messages. krr> Checking DBMAIL mailbox integrity... krr> Ok. Found [0] unconnected mailboxes. krr> Repairing DBMAIL for NULL messages... krr> Ok. Found [0] NULL messages. krr> Checking DBMAIL for NULL physmessages... krr> Ok. Found [0] physmessages without messageblocks. krr> Repairing DBMAIL for incorrect is_header flags... krr> Ok. Found [0] incorrect is_header flags. krr> Deleting messages with PURGE status... krr> Ok. [0] messages deleted. krr> Setting DELETE status for deleted messages... krr> Ok. [0] messages set for deletion. krr> Re-calculating used quota for all users... krr> Ok. Used quota updated for all users. krr> Maintenance done. No errors found. krr> messageblk_idnr=1 and 2 stays on it's place AGAIN!!! krr> What is wrong? As I understand messages of deleted user must be krr> deleted by dbmail-util... After learning sql queries log of dbmail-util I haven't found any queries that compare data in tables `dbmail_physmessage` and `dbmail_messages`. I'm not SQL guru, but IMHO there must be something like following query: SELECT pm.id FROM dbmail_physmessage pm LEFT JOIN dbmail_messages msg ON msg.physmessage_id = pm.id WHERE msg.message_idnr is NULL it will give only dbmail_physmessage.id's that is not present in `dbmail_messages` table