Назад | Перейти на главную страницу

Невозможно заблокировать сообщение об ошибке на SMTP-сервере

У меня появилось следующее сообщение об ошибке: 3 непрерывных для одного и того же почтового ящика

> (delivery failed to mailbox
> /var/spool/postfix/vhosts/<user>/mail/inbox: 
> 
> unable to lock for exclusive access: Resource temporarily unavailable

Я не понял, что происходит ... Вы можете мне объяснить?

Что я могу сделать, чтобы снова избежать появления такого сообщения об ошибке?

Кроме того, у меня есть следующие настройки:

# used only for creating mbox dotlock files when creation fails for INBOX.
# Rely on O_EXCL to work when creating dotlock files. The default is to use
# hard linking. O_EXCL makes the dotlocking faster, but it doesn't always
#dotlock_use_excl = no
# Locking method for index files. Alternatives are fcntl, flock and dotlock.
# Dotlocking uses some tricks which may create more disk I/O than other locking
# methods. NFS users: flock doesn't work, remember to change mmap_disable.
#lock_method = fcntl
# Which locking methods to use for locking mbox. There are four available:
#  dotlock: Create <mailbox>.lock file. This is the oldest and most NFS-safe
#  fcntl  : Use this if possible. Works with NFS too if lockd is used.
#  flock  : May not exist in all systems. Doesn't work with NFS.
#  lockf  : May not exist in all systems. Doesn't work with NFS.
# You can use multiple locking methods; if you do the order they're declared
# in is important to avoid deadlocks if other MTAs/MUAs are using multiple
# locking methods as well. Some operating systems don't allow using some of
#mbox_read_locks = fcntl
#mbox_write_locks = fcntl
# Maximum time in seconds to wait for lock (all of them) before aborting.
#mbox_lock_timeout = 300
# If dotlock exists but the mailbox isn't modified in any way, override the
# lock file after this many seconds.
#mbox_dotlock_change_timeout = 120
  # Keep the mailbox locked for the entire POP3 session.
  #pop3_lock_session = no
# blocking passdb and userdb queries (eg. MySQL and PAM). They're
    # [blocking=yes] [session=yes] [setcred=yes]
    # Setting blocking=yes uses the alternative way: dovecot-auth worker
    # [blocking=yes] - See userdb passwd for explanation
    # [blocking=yes] - See userdb passwd for explanation
    # [blocking=yes] - By default the lookups are done in the main dovecot-auth
    # proceses. Useful with remote NSS lookups that may block.
# used either directly or though a dictionary server. The following dict block

Это означает, что postfix должен попытаться доставить четыре сообщения в почтовый ящик пользователя одновременно. Насколько вы использовали mbox в формате почтового ящика каждая доставка должна выполняться как последовательность операций. Сообщение должно быть сохранено, индексы должны обновляться и так далее. Чтобы предотвратить одновременные доставки, которые могут нарушить структуры mbox, каждая доставка сначала пытается заблокировать почтовый ящик для эксклюзивных операций. При каждой другой доставке после этого будет видно, что почтовый ящик уже заблокирован и в данный момент доставка невозможна. Вот почему вы видите в журнале три предупреждения - первая доставка заблокировала почтовый ящик, а следующие три не удались.

Никакого опасного не произошло. Когда доставка не удалась postfix отложить сообщение в очереди. Время от времени очередь обрабатывается, и каждое сообщение доставляется снова. Причина сообщения из очереди доставляется одно за другим, и каждая доставка происходит только после завершения предыдущей, в файлах журнала нет новых предупреждений. Конечно, если по какой-то причине доставка снова не удастся, сообщение будет отложено в очереди и будет записано предупреждение.