Не работает отправка сообщений

Материал из ISPWiki

Перейти к: навигация, поиск

Отправка сообщений производится самим BILLmanager по расписанию раз в минуту через системный MTA (если не настроен шлюз почтовых сообщений).

За это отвечает задание в cron

  • /1 * * * * /usr/local/ispmgr/sbin/cron.sh sbin/sendbfemails

Если не отправляется почта, первым делом можно проверить наличие данного задания.

Также проверяем, чтобы сам cron и почтовый сервер были запущены. Ищем данные процессы:

ps aux |grep cron
ps aux | egrep 'exim|sendmail|postfix'


Если проблема не выявлена, проверяем дальше по шагам:


В биллинге в разделе "Пользователи", отправляем какому-нибудь пользователю письмо.


Смотрим, что биллинг формирует письмо:

Предварительно включаем Option SqlDebug в billmgr.conf, отправка сообщений логе billmgr.log это выглядит так:

Sep 25 03:12:46 [ 3686:22] mysql query "insert into sendemail (id,message) values (1,'To: \"fly\" <fly@me.ispvds.com>\nFrom: \nSubject: [ID: 1] test\nContent-Type: text/  plain; charset=utf-8\n\nURL: https://my.ispsystem.com/manager/billmgr?func=desktop&startpage=clienttickets&startform=clienttickets.edit&elid=1\n\nSubject: test (ID  1)\n--------------------------------------------------------\ntest mess\n--------------------------------------------------------\nIf you\'d rather not receive future e- mails of this type from ISPsystem, please visit the link: https://my.ispsystem.com/manager/billmgr?func=unsubscribe&cmdhash=9Xkmfg7FrvtjjycrvFvN2UhRPKr9oabSXaRIm59vwKgPqg11h81eUERbhijnYFi6')" res = 0 
Sep 25 03:12:46 [ 3686:22] mysql query "select f.name, ifnull(f.linktoaccount, f.account) from support_messages2fileattach m2f left join fileattach f on f.id=m2f.fileattach where m2f.support_messages=1" res = 0 
Sep 25 03:12:46 [ 3686:22] read rows = 0 
Sep 25 03:12:46 [ 3686:22] mysql query "commit" res = 0 
Sep 25 03:12:46 [ 3686:23] INFO Request [sendnews][admin] 'out=xml&func=longtask.finish&elid=var%2Frun%2Fbillmgr%2Fsendnews%2Esendnews&status=ok' 

Обращаем внимание на результаты выполнения запросов. Если везде res = 0, то ошибок не возникло.


Проверяем, что биллинг передал письмо почтовому серверу:

Это можно посмотреть в логе /usr/local/ispmgr/var/sendbfemails.log со включенным дебагом (echo '9' > /usr/local/ispmgr/etc/sendbfemails.debug).

Видим примерно следующее:

Sep 25 03:24:01 [ 0:0] NOTE Debug level = 9 
Sep 25 03:24:01 [ 4122:0] mysql query "set names utf8" res = 0 
Sep 25 03:24:01 [ 4122:0] EXTINFO Execute (/usr/sbin/sendmail -f -t) return=1 exited 


Execute (/usr/sbin/sendmail -f -t) - показывает, что письмо передалось mta.

Но return=1 exited говорит о том, что функция отработала с ошибкой.

(В данном случае проверяем, что /usr/sbin/sendmail существует, проверяем права. Пробуем сообщение отправить такой же командой из консоли. Оказалось, что не отправляется почта, т.к. не передается ящик, с которого письмо должно уходить. В BILLmanager-> "Проекты" указываем ящик в поле "Почтовый ящик для уведомлений". Указанный ящик должен существовать на сервере).


BILLmanager подключается к удаленному серверу, используя системную библиотеку curl. Если в логе есть ошибки, то можно попробовать подключиться к серверу из консоли. Будет выглядеть примерно так

curl smtps://mail.domain.ru:465 -v -k --user billing@domain.ru:pass

Если почтовому серверу передалось все без ошибок, смотрим в логи самого smtp сервера:

для exim это - /var/log/exim4/mainlog (или /var/log/exim/mainlog на FreeBSD) sendmail и postfix - /var/log/maillog


В нашем случае видим картину:

root@billmgrserver:~# 2012-09-25 03:33:01 1TGPdd-0001EH-MM <= root@mycompany.com U=root P=local S=893 id=m1348558381.4725.01@billmgrserver.com 
2012-09-25 03:33:01 1TGPdd-0001EH-MM ** fly@me.ispvds.com R=nonlocal: Mailing to remote domains not supported 
2012-09-25 03:33:01 1TGPdd-0001EJ-PT <= <> R=1TGPdd-0001EH-MM U=Debian-exim P=local S=1727 
2012-09-25 03:33:01 1TGPdd-0001EH-MM Completed 
2012-09-25 03:33:01 1TGPdd-0001EJ-PT ** root@mycompany.com R=nonlocal: Mailing to remote domains not supported 
2012-09-25 03:33:01 1TGPdd-0001EJ-PT Frozen (delivery error message) 

Переконфигурируем Exim (dpkg-reconfigure exim4-config). По умолчанию для Debian Exim устанавливается только для локальных соединений. Биллинг же при установке никак не трогает и не настраивает почтовый сервер.

Снова отправляем письмо, смотрим в логи. Письмо ушло.

root@billmgrserver:~# 2012-09-25 03:43:01 1TGPnJ-0001WM-3o <= root@mycompany.com U=root P=local S=949 id=m1348558981.5846.01@billmgrserver.com 
2012-09-25 03:43:04 1TGPnJ-0001WM-3o => fly@me.ispvds.com R=dnslookup T=remote_smtp H=mail.me.ispvds.com [188.120.225.20] X=TLS1.0:RSA_AES_256_CBC_SHA1:32   DN="C=XX,ST=XX,L=XX,O=XX,OU=XX,CN=me.ispvds.com,EMAIL=webmaster@me.ispvds.com" 
2012-09-25 03:43:04 1TGPnJ-0001WM-3o Completed 
Была ли эта информация полезной? Да | Нет
Личные инструменты