Кто-нибудь видел следующую проблему с таймаутами блокировки файла procmail при записи в файл mbox? Это происходит каждые пару недель для пользователя со следующим procmailrc:
:0 c: #copy all mail to "bkp"
bkp
В большинстве случаев это работает без проблем. Каждые несколько недель в журнале procmail появляется следующее сообщение:
procmail: Forcing lock on "bkp"
procmail: Timeout, was waiting for "bkp"
Иногда procmail может снять блокировку (или блокировка исчезает) до истечения времени ожидания команды postfix (которое теперь установлено на час). В противном случае доставка почты завершится ошибкой:
relay=local, delay=2001, delays=0.78/0.05/0/2000, dsn=5.3.0,
status=bounced (Command time limit exceeded: "procmail -t -f-")
Файл bkp очень большой (более 10 гигабайт), но проблема периодически возникает с перерывами в несколько недель между экземплярами проблемы и не возникает для других пользователей, у которых есть файлы того же размера procmailrc и гигабайта (хотя ни один из них не такой большой, как этот ).
Пользователь предпочел бы не использовать папки в стиле MailDir и хотел бы сохранить их в виде файла mbox. Есть ли способ переписать сценарий, чтобы разрешить доставку почты в почтовый ящик пользователя, пока procmail ожидает блокировки для bkp? Я пробовал:
:0c #copy all mail to "Saved"
{
:0:
bkp
}
РЕДАКТИРОВАТЬ: Я изменил приведенные выше рецепты с: 0 w: на: 0: поскольку w ожидает выполнения программы, и в этом операторе ничего не выполняется.
Это позволит получить два письма, прежде чем procmail снова перестанет принимать электронную почту, если я вручную заблокирую bkp во время тестов. Если я сниму блокировку до истечения времени ожидания postfix, почта будет доставлена. Я также хотел бы определить основную причину проблемы с блокировкой, но мне еще не удалось ее вызвать, кроме как путем блокировки файла самостоятельно. Я добавил LOCKTIMEOUT = 10, чтобы безуспешно попытаться принудительно выполнить условие при обычной доставке почты.
Вот информация о версии procmail:
procmail v3.22 2001/09/10 Авторские права (c) 1990-2001, Стивен Р. ван ден Берг Авторские права (c) 1997-2001, Филип А. Гюнтер
Отправляйте вопросы / ответы в список рассылки, связанный с procmail, отправляя их по адресу:
И, конечно же, подписка и информационные запросы для этого списка:
Стратегии блокировки: dotlocking, fcntl () rcfile по умолчанию: $ HOME / .procmailrc Он может быть доступен для записи вашей основной группе
Вот что я сделал:
Чтобы проверить свою проблему, я создал vmware-образ debian squeeze и ограничил количество операций ввода-вывода в секунду на диске до 40, а память - до 256 МБ на машине.
Я использовал postfix, dovecot и procmail так же, как и настроил их на своей производственной машине.
Что я нашел:
Это не совсем убедительно, но похоже, что высокая нагрузка на диск вместе с клиентом Outlook, обращающимся к почтовому файлу, который пытается заблокировать procmail, могут легко задержать доставку почты на достаточно долгое время, чтобы достичь таймаута команды, установленного в postfix.
Что еще не пробовал:
Рассматривали ли вы возможность использования почтовых ящиков / файлов для ежедневного / еженедельного резервного копирования меньшего размера?
Вы можете использовать задания cron, чтобы переместить их в основную резервную копию.
man procmailex
дает примеры, как получить названия пунктов назначения на основе date
вывод.
man procmail
дает пример того, как использовать formail для обработки файла почтового ящика с замком.