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

Reply via email to