Eu possuo um VPS usado para hospedar cerca de 30 domínios. Em cada domínio, tenho várias contas de email. No total, mais de 150 contas. Nas últimas duas semanas, percebi que às vezes (várias vezes por dia, principalmente nas horas de pico) há vários emails (de 1 a 10) não sendo enviados, mas eles são adiados. No maillog há uma mensagem “Conexão recusada”. Depois de algum tempo, eles são enviados com sucesso. Alguns são enviados depois de 5 minutos, alguns depois de 2-3 horas, mas todos eles são enviados.
Sou um web designer, com conhecimento decente de programação, mas infelizmente pouca experiência em Linux (Centos7).
Depois de não conseguir encontrar o problema sozinho, cheguei à empresa de hospedagem do meu VPS. Eles disseram que, de fato, limitaram todos os VPS para poder abrir somente um soquete SMTP no momento . Eles fizeram isso como uma medida para combater spammers recebendo seus IPs (ou faixas IP inteiras) na lista negra. Eles me ofereceram para mudar para Dedicado ou encontrar outro hospedeiro. Já que o preço do servidor dedicado é várias vezes maior que o preço do VPS e eu realmente não preciso mudar para o dedicado (eu hospedo 30 sites pequenos, como já mencionei) estou tentando encontrar uma solução para esse problema.
Atualmente, os e-mails adiados forçados a reenviar com
comandopostqueue -f
. Mas eu preciso executar este comando manualmente e quantas vezes houver e-mails adiados na fila . Sem mencionar a necessidade de monitorar constantemente a fila para e-mails diferentes. Obviamente, isso não é uma solução para o meu problema.
Eu tentei agendar um crone
para executar um comando postqueue
periodicamente a cada 5 minutos, mas após a primeira execução recebi um erro como o postqueue de comando Desconhecido ou command not found
ou algo semelhante… acho que tem algo a ver com variáveis ambientais, mas isso está fora do meu escopo de conhecimento agora. Além disso, se houver 10 e-mails adiados na fila, apenas um será enviado com cada cron
de execução. Assim, o último email seria enviado após 50 minutos, o que ainda não é uma ótima solução.
Eu precisaria de um cron para executar algo como isto
Corra crone a cada 5 minutos (ou algo assim)
while (there are deferred emails in the queue)
{
postqueue -f
}
Surge um outro problema: E se o e-mail for diferenciado por outro motivo, em vez de o Connection ser recusado… por exemplo, o host de destino não pode ser acessado no momento ... Do que esse cron nunca terminará…!?! E quanto ao desempenho desta solução cron em geral?
Você já teve alguma experiência com problemas semelhantes? Como eu vivo com essa restrição de soquete SMTP no meu VPS. Devo encontrar outro host ou alternar para dedicado?
Isso pode ser relevante: Eu uso o centos 7 no meu VPS e tenho o painel Plesk para administração de domínio.
Qualquer ajuda seria ótima. Obrigada!
EDITAR:
Eu consegui agendar um cron
com este comando
/sbin/postqueue -f
para executar a cada 5 minutos ( 0,5,10,15,20,25,30,35,40,45,50,55 * * * *
). Mas, como explicado acima, esta ainda não é uma solução perfeita.