I have tested dbmail.(MTA postfix) on Suse 9.1 (for test on vmware) If using myisam tables check should be added like SELECT * FROM dbmail_messages LEFT JOIN dbmail_physmessage ON dbmail_messages.physmessage_id = dbmail_physmessage.id WHERE dbmail_physmessage.id IS NULL if there any records, imap will fail to deliver, or will cache everything into memory! tested on 600mb mailbox and imap eat all memory!! It cannot happen on innodb tables, but a check would be usefull if somebody using myisam.
Imapd does cache the last message into memory and do not relase until next message delivery or logout, for example 6 Mb message by fetching goes up to 14Mb memory and then back to 10Mb memory usage but I think it should free up it.(staying on a message in a client, but message is downloaded and viewed, it use still 10 mb). The email messages will go bigger and bigger so I have made a test database of 6 Mb mails. The message in the database is splitted into half Mb parts, so it should relase the delivered message part of the message, and do not hold in the memory. (I think the memory use is caused by the mysqlclient part because normaly it will not relase memory sended true it, but possibly I'm wrong. I programming in delphi, and when I made mass insert of big blobs to a mysql database with ODBC and ADOTable and not limited the MaxRecords to 1 , all inserted rows remained in memory and have eaten all memory. ). Is header is not used as I seem, is SELECT min( `messageblk_idnr` ) , `physmessage_id` FROM `dbmail_messageblks` WHERE messagecheck.etc.... GROUP BY `physmessage_id` used to determine the header Quota: If over qouta the smtp returns with temporary database error, but it should be return with some other error, because messages will be remain in postfix queue. So if somebody flood a mailbox, he floods the postfix queuen. Or if the mail is returned it does not contain that it is over qouta. No overqouta and qoutawarn message present (for the user). I can write a script doing it, but I can do it in two way: put in the database and move summailsize over qouta or put message with null indicated mailsize. But it should implemented someway....(it could be made by Imapd or pop3d give an extra message (not to database) to the client) I do not understand why qoutacheck performed only at the end, because it is cached . It should check at first remaining qouta, then check the size and next delivery or not when getting the message and messagesize counted by a counter on the fly. And when the memory cache is not used (why used now? bug?) then it not needed to store, discard the remaining part (devnull :)) and give back error. !!!! The shared mailbox works if have same aliases, but when one of the users quote exceed , it will be delivered to the other user(s) every time postfix try to deliver!!! (get the same message more times). I think one way is, the smtp does not give error messages and "accepts" not exist user and over qouta messages and generate the error messages returned to sender self.. The code of autoreply could do this... But must be checked if the sender address is in the user list, domian in the domain(it is a little harder to do see suggestion, but if only error messageges generated by overqouta and hard error is given by not exist users, the domain check it can be left out),and when yes, this is not over qouta (disable bounce)... (lmpt qive 550 by not existent user error but by overquota it gives 415 Recipient <[EMAIL PROTECTED]> Permanent Failure Address Status Destination mailbox address valid (in reply to end of DATA command) but it should be give over qouta limit message or 5xx over qouta message (second would be better, because if it would be the smtp service it ok, but mail would be queuened by sender's emailserver, but now all is queuened by postfix locally.. ) Not existent user smtp: the same like Quota, It should be give harder error, so the queue cannot be flooded.(I do not know if possible to give 5xx like errors by using smtp transport, or any error return codes equivalent to 5xx ). my main.cf #home_mailbox = Maildir/ #mail_spool_directory = /var/mail #canonical_maps = hash:/etc/postfix/canonical #virtual_maps = hash:/etc/postfix/virtual #relocated_maps = hash:/etc/postfix/relocated #transport_maps = hash:/etc/postfix/transport #sender_canonical_maps = hash:/etc/postfix/sender_canonical local_recipient_maps = luser_relay = $name mydestination = /etc/postfix/localdest mailbox_transport = dbmail-smtp: (I use luser_relay (localdest is a plain text file with domain list per line, and will be later generated by a script, and no local_recipient_maps used.) No documentation about auto notification and auto replies does auto replies support for example $Subject? Suggesions: It would be usefull if the aliases alias splitt into 2 parts name and domain, so a domain table could be made and the client_idnr could be used to determine the domain, or something like that, because when want to manage users, it would be easier when can be done per domain(s). Best Regards, Udo Attila Fischer