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

Очередь Apache James отстает

По какой-то причине я часто сталкиваюсь с проблемой освобождения очереди, когда доставленное сообщение всегда отстает от фактически отправленного. Джеймс настроен на отправку входящих сообщений на шлюз (Postfix).

Класс RemoteDelivery имеет это:

        // Set it to try to deliver (in a separate thread) immediately
        // (triggered by storage)

Что такое «хранилище» и где настраивается?

Я установил почтовый ящик, который отправляет совпадающие сообщения (на основе домена получателя) на шлюз (указанный в mailetcontainer). Это работает нормально до тех пор, пока не «застревает», чтобы быть доставленным на шлюз. В журналах Джеймса это отображается как Successfully spooled mail от отправителя, а затем отображается как

[TID=83] INFO  11:04:54,858 | james.smtpserver | Id='1510412390' User='' Successfully spooled mail Mail1581005094857-978ba32f-74e6-4ca1-b903-7994637a9873 from <address@remote> on <remote sender IP> for [<address@local>]
...
[TID=734] INFO  11:04:55,290 | james.mailetcontext | Remotely delivering mail Mail1581005094857-978ba32f-74e6-4ca1-b903-7994637a9873
[TID=34] INFO  11:04:55,290 | james.mailetcontext | Remote delivery thread (0) will process mail Mail1581005072858-90055113-03cf-4bc0-84d7-d47d176feef2
[TID=34] INFO  11:04:55,290 | james.mailetcontext | Attempting to deliver Mail1581005072858-90055113-03cf-4bc0-84d7-d47d176feef2
[TID=734] INFO  11:04:55,312 | james.mailetcontext | Adding SMTP gateway: <gateway address>
[TID=734] INFO  11:04:55,312 | james.mailetcontext | Sending mail to [<address@local>] via [<gateway address>]
[TID=34] INFO  11:04:55,312 | james.mailetcontext | Adding SMTP gateway: <gateway adrdress>
[TID=34] INFO  11:04:55,312 | james.mailetcontext | Attempting delivery of Mail1581005072858-90055113-03cf-4bc0-84d7-d47d176feef2 to host <gateway adrdress> at <gateway adrdress> from <address@remote> for addresses [<address@local>]]

но я не вижу, чтобы почта была успешно отправлена ​​на шлюз.

Чтобы он «открепился», мне нужно, чтобы другое входящее сообщение было отправлено Джеймсу, которое попадет в тот же почтовый ящик, чтобы отправить предыдущее сообщение в буфер, которое застряло раньше. Тогда в журналах Джеймса это будет отображаться как

[TID=35] INFO  11:22:14,443 | james.mailetcontext | Mail (Mail1581005094857-978ba32f-74e6-4ca1-b903-7994637a9873) sent successfully to <gateway adrdress> at <gateway adrdress> from <address@remote> for [[<address@local>]]

Похоже, что если узел ретрансляции изменится, соответствующая очередь может начать вести себя по-другому, действуя как трубка из бумажного полотенца с шариками для пинг-понга, вставленными в один конец. Только когда будет вставлено достаточно шариков, вытащите один из другого конца. Есть мысли по этому поводу?

Выяснилось, что у ActiveMQ версии 5.4.2 есть проблема. Обновился до 5.5.1, и проблема с очередью исчезла.