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