В целом использую такую-же схему, но хотел обратить ваше внимание, что сейчас куча спама поперла из реально зарегистрированных аккаунтов mail.ru, yandex и т.п. Соответственно они спокойно пролазят через все грэй-листинг и спам-ассасины. Тут надо подходить к анализу контента письма, но в этом случае могут и коммерческие предложения в топку улетать.
В моем случае реализовано следующим образом:
1. Имеется imap-папка spam куда посредством фильтров валится спам (пользователь может там найти письмо). Фактически спам не удаляется, а лишь помечается как почитанный, чтобы клиентское по не показывала оповещения на каждый чих
2. Если у пользователя пришел спап, он переносит его в imap-папку спам и через некоторое время адрес и IP отправителя письма добавляется к ручной базе спамеров.
3. Если письмо вытащить из спама, то адрес и IP отправителя помещаются в белый список.
Не сразу конечно взлетело, но схема уже работает как часики и все довольны.