У меня есть VPS, на котором размещено около 30 доменов. В каждом домене у меня есть несколько учетных записей электронной почты. Всего более 150 аккаунтов. За последние пару недель я заметил, что иногда (несколько раз в день, в основном в часы пик) несколько писем (от 1 до 10) не отправляются, а откладываются. В почтовом журнале есть сообщение «В соединении отказано». Через некоторое время они в конечном итоге успешно отправляются. Некоторые отправляются через 5 минут, некоторые через 2-3 часа, но все они отправляются.
Я веб-дизайнер с неплохим знанием программирования, но, к сожалению, небольшим опытом работы с Linux (Centos7).
Не сумев самостоятельно найти проблему, я обратился к хостинговой компании моего VPS. Они сказали, что на самом деле они ограничили все VPS, чтобы они могли открыть только один SMTP-сокет за раз. Они сделали это в качестве меры по борьбе со спамерами, попадающими в черный список своих IP-адресов (или целых диапазонов IP-адресов). Предложили перейти на Dedicated или найти другого хоста. Поскольку цена выделенного сервера в несколько раз превышает цену VPS, и мне действительно не нужно переходить на выделенный (я размещаю 30 небольших веб-сайтов, как уже упоминалось), я пытаюсь найти решение этой проблемы.
В настоящее время отложенные электронные письма, которые я принудительно отправляю повторно,
postqueue -f
команда. Но мне нужно выполнить эту команду вручную и столько раз, сколько отложенных писем в очереди. Не говоря уже о необходимости постоянного мониторинга очереди отложенных писем. Очевидно, это не решение моей проблемы.
Я пытался запланировать crone
выполнить postqueue
команда периодически каждые 5 минут, но после первого выполнения я получил ошибку что-то вроде Неизвестной команды postqueue или command not found
или что-то подобное ... Я думаю, это как-то связано с переменными среды, но сейчас это выходит за рамки моих знаний. Кроме того, если в очереди 10 отложенных писем, только одно будет отправлено с каждым. cron
исполнение. Таким образом, последнее письмо будет отправлено через 50 минут, что все еще не лучшее решение. Мне понадобится cron, чтобы запускать что-то вроде этого Run crone каждые 5 минут (или что-то в этом роде)
while (there are deferred emails in the queue)
{
postqueue -f
}
Возникает еще одна проблема: что, если электронное письмо задерживается по другой причине, а не по другой причине, а не из-за отказа в соединении ... например, хост назначения в данный момент недоступен ... Тогда этот cron никогда не завершится ...!?! Как насчет производительности этого cron-решения в целом?
Были ли у вас подобные проблемы? Как мне жить с этим ограничением сокетов SMTP на моем VPS? Должен ли я найти другой хост или вместо этого переключиться на выделенный?
Это может быть актуально: я использую centos 7 на своем VPS и имею панель Plesk для администрирования домена.
Любая помощь была бы замечательной. Спасибо!
РЕДАКТИРОВАТЬ:
Мне удалось запланировать cron
с этой командой
/ sbin / postqueue -f
бегать каждые 5 минут (0,5,10,15,20,25,30,35,40,45,50,55 * * * *
). Но, как объяснялось выше, это все еще не идеальное решение.