Jorge, One part up for debate that *I* did differently than DBMail expects is that I created a column in dbmail_aliases called user_idnr and made it a foreign key with cascade on delete. This way I could drop everything (except the physmessages as we learned) just by deleting the dbmail_user. There are situation that you may want dbmail_aliases to be stand alone, but 99.9% of the time I didn't require that, and when I did, I just made a dummy user that I attached all my aliases and forwards to. These are system like things, or reserved account names (root, postmaster, etc). Most I did in my Postfix config so I have only 1 or 2 in dbmail. That's my preference, and if it works for you, then I think you can probably do the same thing and achieve the same results. As an aside, I also put my SpamAssassin tables in with my dbmail tables. This way I can tie them into the dbmail_user table as well and cascade delete those as well. -- David
________________________________ From: [EMAIL PROTECTED] on behalf of Jorge Bastos Sent: Fri 7/14/2006 9:22 AM To: DBMail mailinglist Subject: Re: [Dbmail] Delete accounts I've been watching you two talking, But i didn't yet implemented that this system sinse i asked this on the list. I was thinking on delete the user from the dbmail-users table and then pass dbmail-util to take care of the rest, but then i saw you (paul and niblett) posting this on the list and i started to think of deleting the record from the dbmail-users table and then use this SQL statment,sinse this is going to be a new thing my question is, is this improvement going to be inserted into dbmail-util Paul ? If so can you warn when it is available in svn? Thanks, Jorge ----- Original Message ----- From: "Paul J Stevens" <[EMAIL PROTECTED]> To: "DBMail mailinglist" <dbmail@dbmail.org> Sent: Friday, July 14, 2006 11:54 AM Subject: Re: [Dbmail] Delete accounts > Just tried this myself. Took a loooong time to run, but appears to have > cleaned out about 1/3 of my storage. My innodb status suddenly shows 10G > space! Nice. And it didn't lock the tables most of the time so mail > services were not interrupted. > > Paul J Stevens wrote: >> Looks ok to me, but why write a special script? You can do: >> >> CREATE TABLE tmp (id bigint(21) not null primary key); >> INSERT INTO tmp (id) SELECT id FROM dbmail_physmessage p >> LEFT JOIN dbmail_messages m ON p.id = m.physmessage_id >> WHERE m.physmessage_id IS NULL); >> DELETE FROM dbmail_physmessage WHERE id IN (SELECT id FROM tmp); >> DROP TABLE tmp; >> >> This will delete all physmessages that do not have a message associated >> with them, taking with them all related messageblks if you have the >> constraints setup correctly. >> >> >> >> Niblett, David A wrote: >>> So before I do something monumentally stupid. Paul can you >>> tell me if this is correct for finding my unconnected physmessages. >>> >>> SELECT dbmail_physmessage.id, dbmail_messages.physmessage_id >>> FROM dbmail_physmessage >>> LEFT JOIN dbmail_messages >>> ON dbmail_physmessage.id = dbmail_messages.physmessage_id >>> WHERE dbmail_messages.physmessage_id IS NULL >>> >>> My plan is to dump the ID's to a file and then use a simple program >>> to work through them and delete them. >>> >>> If my calculations are correct I have about 600k messages that are >>> not attached to a mailbox any more. That's about 1/3 of my Email >>> store and over a year of time. >>> >>> Thanks. >>> >>> -- >>> David A. Niblett | email: [EMAIL PROTECTED] >>> Network Administrator | Phone: (352) 334-3400 >>> Gainesville Regional Utilities | Web: http://www.gru.net/ >>> >>> >>> -----Original Message----- >>> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On >>> Behalf Of Paul J Stevens >>> Sent: Tuesday, July 11, 2006 3:37 AM >>> To: DBMail mailinglist >>> Subject: Re: [Dbmail] Delete accounts >>> >>> >>> >>> >>> Niblett, David A wrote: >>>> Sorry, I didn't remember, that I did create a foreign key constraint >>>> on a new column in dbmail_aliases connecting it back to user_idnr. >>>> >>>> By adding that column, I was able to retain complete functionality. >>>> Now I admit that my internal requirement is that you can't have an >>>> dbmail_alias entry if you don't have a dbmail_users entry. I made a >>>> placeholder user and tie all my standalone aliases to it. I suppose I >>>> could have used user_idnr #1 (the internal user), but that doesn't >>>> seem like a good idea. >>>> >>>> As for the messages, I think that is also removed (this is v2.0.10). >>>> >>>> CREATE TABLE dbmail_messages ( >>>> ... >>>> mailbox_idnr INT8 REFERENCES dbmail_mailboxes(mailbox_idnr) >>>> ON DELETE CASCADE, >>>> physmessage_id INT8 REFERENCES dbmail_physmessage(id) >>>> ON DELETE CASCADE, >>>> ... >>> David, >>> >>> You're reading this the wrong way. The statement above says that if you >>> delete a physmessage all associated messages are deleted. Deleting >>> messages does *not* affect related physmessages. >>> >>>> Since the dbmail_messages keys to the dbmail_mailboxes, and to >>>> dbmail_physmessages (same with dbmail_messageblks), I believe that it >>>> will cascade all the way down. >>> No it doesn't. And that's a known bug (#305). >>> >>>> When I delete a user, I never see any orphaned blocks when I run >>>> dbmail-util. >>> Because it turns out dbmail-util does not check for them properly; >>> contrary to my earlier statement. >>> >> > > -- > ________________________________________________________________ > Paul Stevens paul at nfg.nl > NET FACILITIES GROUP GPG/PGP: 1024D/11F8CD31 > The Netherlands________________________________http://www.nfg.nl > _______________________________________________ > Dbmail mailing list > Dbmail@dbmail.org > https://mailman.fastxs.nl/mailman/listinfo/dbmail > _______________________________________________ Dbmail mailing list Dbmail@dbmail.org https://mailman.fastxs.nl/mailman/listinfo/dbmail
<<winmail.dat>>