Simon wrote:

It looks like we have reached the Max_data_length for the
dbmail_messageblks table, this is currently 4294967295 (which is 4GB
im gussing - which is about right). From the mysql docs, this can be
easliery solved by running:

ALTER TABLE tbl_name MAX_ROWS=1000000000 AVG_ROW_LENGTH=nnn;

For those who are interested, i have solved this in a different way (thanks Mark!). The above ALTER would have taken quite an amount of time (downtime) to solve doing it either a ALTER or dumping the data then reimporting after the ALTER. The way i did it, only took DBMail offline for 5 mins, have testing on development and all works with no issues (that i can see - any other thoughts here?):

Shut down DBMail...

RENAME TABLE dbmail_messageblks TO dbmail_messageblks_part1;

CREATE TABLE dbmail_messageblks_part2 (
   messageblk_idnr bigint(21) NOT NULL auto_increment,
   physmessage_id bigint(21) DEFAULT '0' NOT NULL,
   messageblk longtext NOT NULL,
   blocksize bigint(21) DEFAULT '0' NOT NULL,
   is_header tinyint(1) DEFAULT '0' NOT NULL,
   PRIMARY KEY (messageblk_idnr),
   INDEX physmessage_id_index (physmessage_id),
   INDEX physmessage_id_is_header_index (physmessage_id, is_header)
);

CREATE TABLE dbmail_messageblks (
   messageblk_idnr bigint(21) NOT NULL auto_increment,
   physmessage_id bigint(21) DEFAULT '0' NOT NULL,
   messageblk longtext NOT NULL,
   blocksize bigint(21) DEFAULT '0' NOT NULL,
   is_header tinyint(1) DEFAULT '0' NOT NULL,
   PRIMARY KEY (messageblk_idnr),
   INDEX physmessage_id_index (physmessage_id),
   INDEX physmessage_id_is_header_index (physmessage_id, is_header)
) TYPE=MERGE UNION(dbmail_messageblks_part1, dbmail_messageblks_part2) INSERT_METHOD=LAST;

Start DBMail with your MTA disabled and test delivery with:

echo -e "Subject: test\nFrom: [EMAIL PROTECTED] \n\n" | dbmail-smtp -u username

Start MTA.

Reply via email to