Hello,

> 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.

  Maybe that could be added to dbmail-util (file a bug in the bug tracker
on it?).

> 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. ).

  If you/someone can track this down to either a mysql client library
problem or a dbmail issue, a bug could be filed against it in the
appropriate place.

> 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


  Correct, is_header isn't used anywhere yet.  See mailing list
archives for recent discussions (dbmail-dev).

> 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.

  Ditto - known issue, see dbmail-dev archives for recent discussion.

> !!!! 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).

  Not sure on the right way to handle this case in general.  For this
case in particular (quota exceeded), returning a 5xx response like you
just mentioned would do it.

> 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.)

  A permanent error is generated, but it's re-injected back into your
mail queue, which fills it up, as you've noticed.  This is handled well
by using local_recipient_maps to point to your dbmail aliases table.
See dbmail list archives for numerous examples of doing so.

> No documentation about auto notification and auto replies
> does auto replies support for example $Subject?

  Correct, no documentation... also recent discussions in the
archives for this.  :)  No, it doesn't support any variable
expansion, and is generally fairly broken right now, it sounds
like (never used it myself).

> 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).

You can of course put your own table in the database with a map of
client_idnr's to domain names to track that.  Since aliases generally
are the full email address anyways, there's not much of a reason for
dbmail to have it seperate itsself.  In fact, it would generally take
even more configuration in your mta to handle delivery for such a
mechanism via direct inject (and via lmtp you'd just be parsing the
addr out into 2 parts and joining back together on a lookup... it's
more efficient the way it is, likely).

> Best Regards,
> Udo Attila Fischer

  Thanks for your comments, suggestions, etc...



--
Jesse Norell

[EMAIL PROTECTED] is not my email address;
change "administrator" to my first name.
--

Reply via email to