主题: 解决 maillog 里 Amavisd duplicate entry 的办法

如果您按照 wiki 的文档整合了 Amavisd-new 和 MySQL,使得 Amavisd 将所有处理过的邮件信息都记录在 MySQL 里,那么在 maillog 里可能会出现类似的错误信息:

1. Feb 17 03:29:19 gw amavis[27760]: (27760-02) (!)WARN save_info_final: sql exec: err=1062, 23000, DBD::mysql::st execute failed: Duplicate entry '0-6N6HdTgjTr8R-0' for key 'PRIMARY' at (eval 115) line 166, <GEN38> line 172.

这是由于不正确的 SQL 表结构导致的,您可以通过以下几个命令修正这个问题:

$ mysql -uroot -p
mysql> USE amavisd;
mysql> ALTER TABLE msgrcpt DROP PRIMARY KEY;
mysql> CREATE INDEX idx_mail_id ON msgrcpt (mail_id);

非常抱歉给大家带来不便。

另,Amavisd-new-2.7.0 的测试版里已经修正了这个问题。