Ошибка при отправке почты

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Reken
лейтенант
Сообщения: 617
Зарегистрирован: 2014-06-30 11:23:24

Ошибка при отправке почты

Непрочитанное сообщение Reken » 2014-10-31 9:48:25

Доброго времени суток
Помогите мне пожалуйста разобраться в следующем:
На FreeBSD 9.2 (этот FreeBSD является шлюзом) я собрал следующую схему Fetchmail+EXIM+Dovecot+MYSQL+Postfixadmin. Всё это для того что бы пользователи локальной сети, под управлением данного шлюза могли использовать почту через домен. Подробные конфиги вышеуказанных программ приведу, если понадобится их показать.
IP шлюза внутри локалки = 192.168.0.17
IP компа с которогго пытаюсь отправить почту = 192.168.0.6. Проблема у меня такая, когда отправляю почту с компа (192.168.0.6), выскакивает ошибка, что невозможно отправить почту (скрин прикрепил). Для отправки почты с компа использую клиент Mozilla Thunderbird, соответсвенно все настройки в почте указал (что за сервер, что за учетка и т.д.). Почту я отправлял на ящик yandex. На получение почта тоже не работает (но для начала нужно разобраться хотя бы с отправкой)
Привожу ЛОГ exim после ошибки в почте:

Код: Выделить всё

2014-10-31 10:18:27 IPv6 socket creatinon failed: Protocol not supported
2014-10-31 10:18:27 Failed to create IPv6 socket for wildcard listening (Protocol not support): will use IPv4
2014-10-31 10:18:27 exim 4.80.1 daemon started: pid=1249, -q30m, listening for SMTP on port 25 (IPv4) and for SMTPS on port 9025 (IPv4)
2014-10-31 10:19:54 no host name found for IP address 192.168.0.6
2014-10-31 10:19:54 failed to expand "${lookup mysql{SELECT 'domain' FROM 'domain' WHERE 'domain'='${domain}' AND 'active'='1'}}" while checking a list: lookup of "SELECT 'domain' FROM 'domain' WHERE 'domain'='yandex.ru' AND 'active'='1'" gave DEFER: MYSQL: query failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''domain' WHERE 'domain'='yandex.ru' AND 'active'='1'' at line 1

2014-10-31 10:19:54 H=([127.0.0.1]) [192.168.0.6] I=[192.168.0.17]:25 F=<пользователь@setevoy.org.ua> temporarily rejected RCPT <Почта@yandex.ru>: MYSQL: query failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''domain' WHERE 'domain'='yandex.ru' AND 'active'='1'' at line 1
На сколько я понял, ЛОГ ругается на базу в MYSQL, но не могу понять почему он на неё ругается. Почтовый ящик пользователя, я добавил в базу через postfixadmin.
Подскажите пожалуйста в моем вопросе, если я что то непонятно написал, то скажите, попробую точнее написать.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
skeletor
майор
Сообщения: 2548
Зарегистрирован: 2007-11-16 18:22:04

Re: Ошибка при отправке почты

Непрочитанное сообщение skeletor » 2014-10-31 15:06:59

Ошибка в запросе mysql. Скорее всего лишние кавычки где-то стоят. Куда смотреть: конфиг exim'a. Если вам не разберётесь - выложите сюда. Только не весь, а те участки кода, которые содержат mysql запросы.

Аватара пользователя
Neus
капитан
Сообщения: 1935
Зарегистрирован: 2008-09-08 21:59:56

Re: Ошибка при отправке почты

Непрочитанное сообщение Neus » 2014-10-31 15:30:38

думаю надо так:

Код: Выделить всё

${lookup mysql{SELECT domain FROM domain WHERE domain='${domain}' AND active='1'}}

Reken
лейтенант
Сообщения: 617
Зарегистрирован: 2014-06-30 11:23:24

Re: Ошибка при отправке почты

Непрочитанное сообщение Reken » 2014-11-05 8:55:43

skeletor писал(а):Если вам не разберётесь - выложите сюда. Только не весь, а те участки кода, которые содержат mysql запросы.
Наверное сам не смогу разобраться, так что выкладываю конфиг EXIM. Эти строки в моем EXIMе я скопировал с другой системы FreeBSD, где почта работает по такой же схеме как и у меня. Только вот на другом FreeBSD работает, а у меня нет.
Код моего EXIM:

Код: Выделить всё

hide mysql_servers = localhost/база/пользователь/пароль

domainlist local_domains = ${lookup mysql{SELECT `domain` FROM `domain` WHERE `d
omain`='${domain}' AND `active`='1'}}
domainlist relay_to_domains = ${lookup mysql{SELECT `domain` FROM `domain` WHERE
 `domain`='${domain}' AND `active`='1'}}
hostlist   relay_from_hosts = localhost:127.0.0.0/8:192.168.0.0/24

system_aliases:
  driver = redirect
  allow_fail
  allow_defer
  data = ${lookup mysql{SELECT `goto` FROM `alias` WHERE `address`='${quote_mysq
l:$local_part@$domain}' OR `address`='${quote_mysql:@$domain}'}}

dovecot_user:
  driver = accept
  condition = ${lookup mysql{SELECT `goto` FROM `alias` WHERE `address`='${quote
_mysql:$local_part@$domain}' OR `address`='${quote_mysql:@$domain}'}{yes}{no}}
  transport = dovecot_delivery

auth_plain:
  driver = plaintext
  public_name = PLAIN
  server_condition = ${lookup mysql{SELECT `username` FROM `mailbox` WHERE `user
name` = '${quote_mysql:$auth2}' AND `password` = '${quote_mysql:$auth3}'}{yes}{n
o}}
  server_prompts = :
  server_set_id = $auth2

auth_login:
  driver = plaintext
  public_name = LOGIN
  server_condition = ${lookup mysql{SELECT `username` FROM `mailbox` WHERE `user
name` = '${quote_mysql:$auth1}' AND `password` = '${quote_mysql:$auth2}'}{yes}{n
o}}
  server_prompts = Username:: : Password::
  server_set_id = $auth1

auth_cram_md5:
  driver = cram_md5
  public_name = CRAM-MD5
  server_secret = ${lookup mysql{SELECT `password` FROM `mailbox` WHERE `usernam
e` = '${quote_mysql:$auth1}'}{$value}fail}
  server_set_id = $auth2

lazhu
сержант
Сообщения: 240
Зарегистрирован: 2013-08-10 14:28:38
Контактная информация:

Re: Ошибка при отправке почты

Непрочитанное сообщение lazhu » 2014-11-05 9:14:57

Код: Выделить всё

'${domain}'
А кавычки тут точно не должны быть двойными?

Reken
лейтенант
Сообщения: 617
Зарегистрирован: 2014-06-30 11:23:24

Re: Ошибка при отправке почты

Непрочитанное сообщение Reken » 2014-11-05 9:51:25

lazhu писал(а):

Код: Выделить всё

'${domain}'
А кавычки тут точно не должны быть двойными?
Попробовал поставить двойные кавычки, не помогло. Та же ошибка в ЛОГе, после попытки отправить почту.

snorlov
подполковник
Сообщения: 3917
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Re: Ошибка при отправке почты

Непрочитанное сообщение snorlov » 2014-11-05 13:00:05

Какой-то кривой запрос, у вас таблица domain и поле в ней domain, поэтому наверное и не может разобрать, что ему брать надо поле domain в таблице domain, может надо where domain.domain...

Аватара пользователя
Neus
капитан
Сообщения: 1935
Зарегистрирован: 2008-09-08 21:59:56

Re: Ошибка при отправке почты

Непрочитанное сообщение Neus » 2014-11-05 13:14:50

snorlov писал(а):Какой-то кривой запрос, у вас таблица domain и поле в ней domain, поэтому наверное и не может разобрать, что ему брать надо поле domain в таблице domain, может надо where domain.domain...
на другой машине же работает
да и парсер не такой тупой чтобы искать таблицу вместо поля :)

snorlov
подполковник
Сообщения: 3917
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Re: Ошибка при отправке почты

Непрочитанное сообщение snorlov » 2014-11-05 13:29:11

Срнавните версии MySQL, там может быть засада...

Reken
лейтенант
Сообщения: 617
Зарегистрирован: 2014-06-30 11:23:24

Re: Ошибка при отправке почты

Непрочитанное сообщение Reken » 2014-11-05 14:17:33

snorlov писал(а):Срнавните версии MySQL, там может быть засада...
Сравнил, версии разные. Думаете мне стоит поставить аналогичную версию?
Моя версия:
mysql-client-5.5.33
mysql-server-5.5.33

Другой комп (с которого я переписал конфиг)
mysql56-client-5.6.21
mysql56-server-5.6.21

snorlov
подполковник
Сообщения: 3917
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Re: Ошибка при отправке почты

Непрочитанное сообщение snorlov » 2014-11-05 14:57:06

Ну сначала почитайте, а потом поставьте... Да кстати, можно ручками послать запрос через клиента и убедиться в этом...

Reken
лейтенант
Сообщения: 617
Зарегистрирован: 2014-06-30 11:23:24

Re: Ошибка при отправке почты

Непрочитанное сообщение Reken » 2014-11-05 15:11:46

snorlov писал(а):можно ручками послать запрос через клиента и убедиться в этом...
А подскажите пожалуйста, как?

snorlov
подполковник
Сообщения: 3917
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Re: Ошибка при отправке почты

Непрочитанное сообщение snorlov » 2014-11-05 15:15:35

Reken писал(а):
snorlov писал(а):можно ручками послать запрос через клиента и убедиться в этом...
А подскажите пожалуйста, как?
Не подскажу, компа под рукой нет...

Reken
лейтенант
Сообщения: 617
Зарегистрирован: 2014-06-30 11:23:24

Re: Ошибка при отправке почты

Непрочитанное сообщение Reken » 2014-11-05 15:21:57

snorlov писал(а):Не подскажу, компа под рукой нет...
Ну если появится возможность, подскажите. Буду рад :smile:

snorlov
подполковник
Сообщения: 3917
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Re: Ошибка при отправке почты

Непрочитанное сообщение snorlov » 2014-11-05 15:43:09

Да там все просто, запустите man mysql, а так mysql -h <ip хоста где крутиться mysql> -u <user, обычно root>, если нашел сервер, то запросит пароль, после чего вы попадаете в командную строку клиента, выбираете базу use база, ну а затем делаете ваш запрос
SELECT domain FROM domain WHERE domain='yandex.ru' AND active='1'
Это можно проделать и на сервере где все работает, меняя ip серверов

Reken
лейтенант
Сообщения: 617
Зарегистрирован: 2014-06-30 11:23:24

Re: Ошибка при отправке почты

Непрочитанное сообщение Reken » 2014-11-06 8:39:57

В командной строке клиента mysql я набрал тест:

Код: Выделить всё

SELECT domain FROM domain WHERE domain='yandex.ru' AND active='1'
Этот запрос ничего не выдал, или я что то не так понял в вышеуказанной команде?
Далее в этой же консоли посмотрел таблицу mailbox, ящик пользователя существует, и всё правильно заполнено.
Не могу понять почему ЛОГ ругается на базу. Что ещё нужно то этой почте :st:

P.S. Обновил mysql до версии 5.6.13. Обновление не помогло в устранении ошибки.

Reken
лейтенант
Сообщения: 617
Зарегистрирован: 2014-06-30 11:23:24

Re: Ошибка при отправке почты

Непрочитанное сообщение Reken » 2014-11-06 9:01:25

Ещё одна ошибка прибавилась в ЛОГЕ EXIM

Код: Выделить всё

Мой почтовый алиас routing defer (-51): retry time not reached
Что это может быть?

snorlov
подполковник
Сообщения: 3917
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Re: Ошибка при отправке почты

Непрочитанное сообщение snorlov » 2014-11-06 9:19:45

Reken писал(а):В командной строке клиента mysql я набрал тест:

Код: Выделить всё

SELECT domain FROM domain WHERE domain='yandex.ru' AND active='1'
Этот запрос ничего не выдал, или я что то не так понял в вышеуказанной команде?
Далее в этой же консоли посмотрел таблицу mailbox, ящик пользователя существует, и всё правильно заполнено.
Не могу понять почему ЛОГ ругается на базу. Что ещё нужно то этой почте :st:

P.S. Обновил mysql до версии 5.6.13. Обновление не помогло в устранении ошибки.
Ну если ничего не выдал, то и нет этой записи в таблице domain, а что должно быть в этой таблице? ваш домен или же сторонний?

Reken
лейтенант
Сообщения: 617
Зарегистрирован: 2014-06-30 11:23:24

Re: Ошибка при отправке почты

Непрочитанное сообщение Reken » 2014-11-06 9:32:55

snorlov писал(а):Ну если ничего не выдал, то и нет этой записи в таблице domain, а что должно быть в этой таблице? ваш домен или же сторонний?
Нет, там есть мой домен. Я посмотрел таблицу domain
В ней есть и домен, и состояние активное, и всё по аналогии как у другого компа (где всё работает)

snorlov
подполковник
Сообщения: 3917
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Re: Ошибка при отправке почты

Непрочитанное сообщение snorlov » 2014-11-06 11:22:51

Reken писал(а):
snorlov писал(а):Ну если ничего не выдал, то и нет этой записи в таблице domain, а что должно быть в этой таблице? ваш домен или же сторонний?
Нет, там есть мой домен. Я посмотрел таблицу domain
В ней есть и домен, и состояние активное, и всё по аналогии как у другого компа (где всё работает)
Разговор тогда идет почему у вас запрашивается yandex.ru, а не ваш домен...

Reken
лейтенант
Сообщения: 617
Зарегистрирован: 2014-06-30 11:23:24

Re: Ошибка при отправке почты

Непрочитанное сообщение Reken » 2014-11-06 11:27:55

snorlov писал(а):Разговор тогда идет почему у вас запрашивается yandex.ru, а не ваш домен...
Сам не могу понять. Если пытаюсь отправить почту на ящик Yandex, то и запрашивается yandex. Если пытаюсь отправить почту на ящик mai, то и запрашивается mail (В ЛОГАХ)
Как вы думаете почему так происходит?

Аватара пользователя
skeletor
майор
Сообщения: 2548
Зарегистрирован: 2007-11-16 18:22:04

Re: Ошибка при отправке почты

Непрочитанное сообщение skeletor » 2014-11-10 14:12:39

Версия exim'a какая? Старше 4.82? Я недавно тоже столкнулся с похожей проблемой на 4.84.1 и проблема там была не в синтаксисе.

Reken
лейтенант
Сообщения: 617
Зарегистрирован: 2014-06-30 11:23:24

Re: Ошибка при отправке почты

Непрочитанное сообщение Reken » 2014-11-10 18:43:17

skeletor писал(а):Версия exim'a какая? Старше 4.82? Я недавно тоже столкнулся с похожей проблемой на 4.84.1 и проблема там была не в синтаксисе.
Всё, с ошибкой которую я привел выше, получилось разобраться. Всё таки дело было в синтаксисе. Я поставил кавычки такие ', а надо было такие ` (буква Ё на клав.)
Теперь другая беда, на dovecot начал ругаться. На память ошибку не помню. Завтра с работы точно напишу.

Reken
лейтенант
Сообщения: 617
Зарегистрирован: 2014-06-30 11:23:24

Re: Ошибка при отправке почты

Непрочитанное сообщение Reken » 2014-11-11 8:56:37

Теперь у меня почта с компа (который в домене FreeBSD) отправляется. Но адресат почту не получает.
Вот что теперь пишут ЛОГИ exim и dovecot
EXIM/MAINLOG

Код: Выделить всё

1Xmeq3-0000UG-3y == пользователь@setevoy.local(почтовый ящик с которого отправил письмо)  R=dovecot_user T=dovecot_delivery defer (-52): Retry time not yet reached
no host name found for IP address 192.168.0.6 (IP компа с которого отправил письмо)
1Xo4Lp-0000NA-OC <= пользователь@setevoy.local H=([127.0.0.1]) [192.168.0.6] I=[192.168.0.17(IP FReeBSD(Шлюза)):25 P=esmtp S=438 id=номерIDsetevoy.local from <пользователь@setevoy.local> for Пользователь@yandex.ru
1Xo4Lp-0000NA-OC ** пользователь@yandex.ru <пользователь@yandex.ru>: Unrouteable address
1Xo4Lq-0000ND-8Y <= <> R=1Xo4Lp-0000NA-OC U=mailnull P=local S=1097 from <> for пользователь@setevoy.local
1Xo4Lp-0000NA-OC Completed
1Xo4Lq-0000ND-8Y == пользователь@setevoy.local R=dovecot_user T=dovecot_delivery defer (0): Child process of dovecot_devecot_delivery transport returned 75 (could mean temporary error) from command: /usr/local/libexec/dovecot/deliver
DOVECOT.LOG

Код: Выделить всё

pop3-login: Info: user=<пользователь@setevoy.local>, method=PLAIN, rip=192.168.0.6, lip=192.168.0.17
POP3(пользователь@setevoy.local): Info: Couldn't open INBOX top=0/0, retr=0/0, del=0/0, size=0
Ещё раз повторюсь, все конфиги, я переписал с аналогичной системы, на которой всё работает. Как думаете в чем может быть проблема?

Reken
лейтенант
Сообщения: 617
Зарегистрирован: 2014-06-30 11:23:24

Re: Ошибка при отправке почты

Непрочитанное сообщение Reken » 2014-11-11 11:08:25

Уже не знаю, какие логи смотреть, что исправлять и т.д. Уже столько времени потратил на эту систему dovecot+exim+ и т.д.
Единственное на что осталось думать, так это то, что на аналогичной машине, где всё работает, используют сертификат SSL в EXIM и DOVECOT.
Но это же не должно никак отражаться? Тем более в логах ни слова про это не сказано.