I had similar problems, but I think it may have related to the number of
messages returned. I had something like 40,000 to purge, and I don't think
the query was returning.

>From memory, if I changed all but 100 customers to state=002 and then ran
Status: O

purge, it worked. But this was a real pain so I ended up writing a perl
program to do it.


#!/usr/bin/perl
use DBI;

$db_dbmailauth = DBI->connect($DBMAILAUTH_DBHOST, $DBMAILAUTH_DBUSER,
$DBMAILAUTH_DBPASS);
$db_dbmailstore = DBI->connect($DBMAILSTORE_DBHOST, $DBMAILSTORE_DBUSER,
$DBMAILSTORE_DBPASS);

print "Getting message list (status=003) \n";

my $query = $db_dbmailstore->prepare("select message_idnr from messages
where status=003 order by message_idnr limit 50000");
   $query->execute || print "error was ".$db_dbmailstore->errstr;
   $query->bind_columns( undef, \($message_idnr) );

print "DELETING THE FOLLOWING MESSAGES\n";

while ($query->fetch) {
    print "+ $message_idnr \n";

    #print "    - messageblks \n";
    my $query2 = $db_dbmailstore->prepare("delete from messageblks where
message_idnr='$message_idnr' ");
       $query2->execute || die "error was ".$db_dbmailstore->errstr;

    #print "    - message \n";

    my $query2 = $db_dbmailstore->prepare("delete from messages where
message_idnr='$message_idnr' ");
       $query2->execute || die "error was ".$db_dbmailstore->errstr;

    ##print "    - message_headers \n";
    #
    #my $query2 = $db_dbmailstore->prepare("delete from message_headers
where message_idnr='$message_idnr' ");
    #   $query2->execute || die "error was ".$db_dbmailstore->errstr;
    
}


Crude but effective. Ignore mail headers, that¹s part of our webmail
interface we're working on.

/Mark




On 27/12/02 4:25 AM, "Eli Stair" <[EMAIL PROTECTED]> wrote:

> Starting today, dbmail-maintenance has started segfaulting when run.  I
> manually
> run maintenance so I can check status and see output.  Below is the command
> stdout as well as the info log from the maintenance run.  This is the second
> segfault, first time I was only logging dbmail-maintenance at TRACE=2, this is
> now at 5.
> 
> Im guessing this is somehow related to the problems I'm having with pop3d
> sig11ing
> when checking POP, but that's only a guess.  The system is running MySQL
> 4.0.5b
> with INNODB tables, database is _extremely small_, > 1MB with only 3 accounts
> receiving mail.
> 
> /eli
> 
> 
> # dbmail-maintenance -c -i -p -d
> *** dbmail-maintenance ***
> Opening connection to the database... Ok. Connected
> Deleting messages with DELETE status... Ok. [1] messages deleted.
> Setting DELETE status for deleted messages... Ok. [0] messages set for
> deletion.
> Now checking DBMAIL messageblocks integrity.. Segmentation fault
> 
> ---/var/mail/info
> Dec 26 11:14:45 tardis dbmail/maintenance[15496]: ReadConfig(): starting
> procedure
> Dec 26 11:14:45 tardis dbmail/maintenance[15496]: ReadConfig(): found [DBMAIL]
> tag
> Dec 26 11:14:45 tardis dbmail/maintenance[15496]: ReadConfig(): no value
> specified for service item [].
> Dec 26 11:14:45 tardis dbmail/maintenance[15496]: ReadConfig(): item [host]
> value [localhost] added
> Dec 26 11:14:45 tardis dbmail/maintenance[15496]: ReadConfig(): item [user]
> value [dbmail] added
> Dec 26 11:14:45 tardis dbmail/maintenance[15496]: ReadConfig(): item [pass]
> value [{*****}] added
> Dec 26 11:14:45 tardis dbmail/maintenance[15496]: ReadConfig(): item [db]
> value [dbmail] added
> Dec 26 11:14:45 tardis dbmail/maintenance[15496]: ReadConfig(): no value
> specified for service item [].
> Dec 26 11:14:45 tardis dbmail/maintenance[15496]: ReadConfig(): item
> [TRACE_LEVEL] value [5] added
> Dec 26 11:14:45 tardis dbmail/maintenance[15496]: ReadConfig(): service
> [DBMAIL] added
> Dec 26 11:14:45 tardis dbmail/maintenance[15496]: ReadConfig(): config for
> [DBMAIL] read, found [5] items
> Dec 26 11:14:45 tardis dbmail/maintenance[15496]: GetConfigValue(): searching
> value for config item [trace_level]
> Dec 26 11:14:45 tardis dbmail/maintenance[15496]: GetConfigValue(): found
> value [5]
> Dec 26 11:14:45 tardis dbmail/maintenance[15496]: GetConfigValue(): searching
> value for config item [host]
> Dec 26 11:14:45 tardis dbmail/maintenance[15496]: GetConfigValue(): found
> value [localhost]
> Dec 26 11:14:45 tardis dbmail/maintenance[15496]: GetConfigValue(): searching
> value for config item [db]
> Dec 26 11:14:45 tardis dbmail/maintenance[15496]: GetConfigValue(): found
> value [dbmail]
> Dec 26 11:14:45 tardis dbmail/maintenance[15496]: GetConfigValue(): searching
> value for config item [user]
> Dec 26 11:14:45 tardis dbmail/maintenance[15496]: GetConfigValue(): found
> value [dbmail]
> Dec 26 11:14:45 tardis dbmail/maintenance[15496]: GetConfigValue(): searching
> value for config item [pass]
> Dec 26 11:14:45 tardis dbmail/maintenance[15496]: GetConfigValue(): found
> value [mL$jX3Q7]
> Dec 26 11:14:45 tardis dbmail/maintenance[15496]: db_deleted_purge():
> executing query [SELECT message_idnr FROM messages WHERE status=003]
> Dec 26 11:14:45 tardis dbmail/maintenance[15496]: db_query(): executing
> [SELECT message_idnr FROM messages WHERE status=003]
> Dec 26 11:14:45 tardis dbmail/maintenance[15496]: db_deleted_purge(): trying
> to delete blocks for  message [470]
> Dec 26 11:14:45 tardis dbmail/maintenance[15496]: db_query(): executing
> [DELETE FROM messageblks WHERE message_idnr=470]
> Dec 26 11:14:45 tardis dbmail/maintenance[15496]: db_deleted_purge():
> executing query [DELETE FROM messages WHERE status=003]
> Dec 26 11:14:45 tardis dbmail/maintenance[15496]: db_query(): executing
> [DELETE FROM messages WHERE status=003]
> Dec 26 11:14:45 tardis dbmail/maintenance[15496]: db_set_deleted(): executing
> query [UPDATE messages SET status=003 WHERE status=002]
> Dec 26 11:14:45 tardis dbmail/maintenance[15496]: db_query(): executing
> [UPDATE messages SET status=003 WHERE status=002]
> Dec 26 11:14:45 tardis dbmail/maintenance[15496]: db_query(): executing
> [SELECT messageblk_idnr FROM messageblks ORDER BY messageblk_idnr DESC LIMIT
> 0,1]
> Dec 26 11:14:45 tardis dbmail/maintenance[15496]: db_query(): executing
> [SELECT messageblk_idnr, message_idnr FROM messageblks LIMIT 0,1000000]
> 


Reply via email to