Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Почтовый сервер Dovecot+SQL+postfix+postfixadmin+RoundCube+12.04  (Прочитано 10168 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Dee

  • Автор темы
  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Всем привет!

Разворачиваю уже который день это чудо.
По плану: imap pop smtp virtualdomains webinterface

Письма уже шлет (правда только через postfixadmin).

Прошу помощи с решением вот каких проблем (сам не нашел):

Создал учетку через постфиксадмин. Завел учетку в аутлуке 2007 офис.
Создаю и отправляю письмо на свой гуглоящик.
Письмо на сервер пропихивается и тут же администратор системы мне дает ответ, что сообщение небыло получено адресатами.

'MyGoogleMail@gmail.com' 03.10.2012 11:03
            554 5.7.1 <unknown[83.242.***.154]>: Client host rejected: Access denied
Т.е. для моего ипшника доступ запрещен.

syslog показывает на сервере вот что:
(Нажмите, чтобы показать/скрыть)

Т.е. тут получается, что мой ипшник не прорезольвился в FQND. И тут идет отлуп.

Конфиг postfix

main.cf
(Нажмите, чтобы показать/скрыть)

Тут вообщем-то на клиента не ограничений в части резольва ип адреса и т.п.
А в лог падает всеравно реджект.

И еще мне не понятна ошибка с SQL-ом

(Нажмите, чтобы показать/скрыть)

Тут вообще косяк с SQL запросом, т.к.к базе коннект устанавливается (ошибки нету на эту тему) а с запросом не выходит.
Вопрос- что за запрос он пытается там исполнить.

конфиг довкота
dovecot.conf
(Нажмите, чтобы показать/скрыть)

И конфиг довкота
dovecot-sql

(Нажмите, чтобы показать/скрыть)

Господа, прошу помощи!
Горит у меня срок по этой ерундовине и тест виртуалки кончается, а по факту не потустировали даже

Оффлайн satch

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 1561
  • Kubuntu 15.10 amd64
    • Просмотр профиля
Re: Почтовый сервер Dovecot+SQL+postfix+postfixadmin+RoundCube+12.04
« Ответ #1 : 03 Октября 2012, 12:22:32 »
в такой ситуации, когда горят сроки, лучше ставить что-то вроде iredmail
Наше желание помочь прямопропорционально вашему желанию решить проблему

Оффлайн Dee

  • Автор темы
  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: Почтовый сервер Dovecot+SQL+postfix+postfixadmin+RoundCube+12.04
« Ответ #2 : 03 Октября 2012, 12:24:19 »
iredmail решили не ставить по другим причинам.

Свзяка моя, в приципе, поднята. Не ясен момент с этими 2 ошибками.

Оффлайн Karl500

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2267
    • Просмотр профиля
Re: Почтовый сервер Dovecot+SQL+postfix+postfixadmin+RoundCube+12.04
« Ответ #3 : 03 Октября 2012, 12:42:59 »
1. При отправке на внешний адрес почта не проходит? Проверьте записи DNS. Проверьте правильность записи в обратной зоне.
2. У Вас два "источника" пользователей для dovecot - passwd и mysql, а пароли Вы проверяете по pam и опять же mysql?

Оффлайн Dee

  • Автор темы
  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: Почтовый сервер Dovecot+SQL+postfix+postfixadmin+RoundCube+12.04
« Ответ #4 : 03 Октября 2012, 13:04:49 »
1. При отправке на внешний адрес почта не проходит? Проверьте записи DNS. Проверьте правильность записи в обратной зоне.
2. У Вас два "источника" пользователей для dovecot - passwd и mysql, а пароли Вы проверяете по pam и опять же mysql?

1. Есши шлю через постфиксадмин- все приходит чудесно на любые адреса.
Через почтовик не могу, т.к. реджект клиентского коннекта с офисного ипшника.
С днс записями все ок.
Про обратную зону не совсем понял.
Это вы про ошибку
dovecot: pop3-login: Internal login failure (pid=6741 id=1) (auth failed, 1 attempts):
user=<ddd@mydomain.ru>, method=PLAIN, rip=83.242.***.154, lip=188.127.***.248, mpid=6754, TLS
где Lip в виде ип,а не адреса?

2. С 2 источниками это вы верно заметили- оставил только sql.

Оффлайн Karl500

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2267
    • Просмотр профиля
Re: Почтовый сервер Dovecot+SQL+postfix+postfixadmin+RoundCube+12.04
« Ответ #5 : 03 Октября 2012, 13:18:33 »
По отсылке стало яснее.

По какой причине Вы считаете, что Ваше письмо должно быть принято сервером для доставки наружу? Вы включили аутентификацию SMTP в клиенте? Как она у Вас должна проходить?

Про обратную зону пока забудьте (однако она Вам все равно понадобится - без прописывания хоста в нее Ваши письма многие серверы будут считать потенциальным спамом и режектить).

По SQL-запросу - что-то у Вас накручено там зело... У Вас в каком виде хранятся записи в БД? Покажите пример одной записи (только полностью все поля).

Пользователь решил продолжить мысль 03 Октября 2012, 13:24:54:
Ну и - значения (8, 1005) в запросе нужно брать в кавычки.
« Последнее редактирование: 03 Октября 2012, 13:24:54 от Karl500 »

Оффлайн Dee

  • Автор темы
  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: Почтовый сервер Dovecot+SQL+postfix+postfixadmin+RoundCube+12.04
« Ответ #6 : 03 Октября 2012, 14:17:08 »
По отсылке стало яснее.

По какой причине Вы считаете, что Ваше письмо должно быть принято сервером для доставки наружу? Вы включили аутентификацию SMTP в клиенте? Как она у Вас должна проходить?

Про обратную зону пока забудьте (однако она Вам все равно понадобится - без прописывания хоста в нее Ваши письма многие серверы будут считать потенциальным спамом и режектить).

По SQL-запросу - что-то у Вас накручено там зело... У Вас в каком виде хранятся записи в БД? Покажите пример одной записи (только полностью все поля).

Пользователь решил продолжить мысль 03 Октября 2012, 13:24:54:
Ну и - значения (8, 1005) в запросе нужно брать в кавычки.

Отсылку считаю обязанной свершиться, ибо авторизация SMTP птичка стоит в аутлуке.
И на сервер письмо пропихивается.
Только реджектится в связи с невозможностью преобразовать ип офиса (откуда выхожу) в FQDN.
Более того, письма от суперадмина (admin@mydomain.ru) из постфиксадмина уходят от меня и приходят на гуглосервера.


Не совсем понятен вопрос про авторизацию "Как она у Вас должна проходить?".
Если я верно понял (надеюсь)- то по SQL базе сличаться пара должна и дальше уже пускать-отлупливать авторизацию.

Про обратную зону я подзабуду, но в панели управления доменами (таймвеб) у меня нет редакции обратных зон ни для одного из полсотни доменов.

С SQL запросом сейчас покручу- с коллегой за обедом тоже подумали.

Оффлайн Karl500

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2267
    • Просмотр профиля
Re: Почтовый сервер Dovecot+SQL+postfix+postfixadmin+RoundCube+12.04
« Ответ #7 : 03 Октября 2012, 14:28:00 »
Да нет. Режектится оно, потому что у Вас:
- стоят ограничения permit_mynetworks, permit_sasl_autenticated И
- адрес получателя не обслуживается сервером postfix, И
- IP-адрес клиента не находится в mynetworks, И
- не проходит аутентификация (естественно, т.к. у Вас аутентификацией dovecot занимается, а у него SQL запросы неверные).

Из postfixadmin'а письма проходят, т.к. IP-адрес отправителя (127.0.0.1) есть в mynetworks,

Оффлайн Dee

  • Автор темы
  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: Почтовый сервер Dovecot+SQL+postfix+postfixadmin+RoundCube+12.04
« Ответ #8 : 03 Октября 2012, 15:42:39 »
Да нет. Режектится оно, потому что у Вас:
- стоят ограничения permit_mynetworks, permit_sasl_autenticated И
- адрес получателя не обслуживается сервером postfix, И
- IP-адрес клиента не находится в mynetworks, И
- не проходит аутентификация (естественно, т.к. у Вас аутентификацией dovecot занимается, а у него SQL запросы неверные).

Из postfixadmin'а письма проходят, т.к. IP-адрес отправителя (127.0.0.1) есть в mynetworks,

Принял!
Пошел проверять это и свои мысли.
Отпишу по результату

Пользователь решил продолжить мысль 03 Октября 2012, 19:01:06:
Хех, добил.
В итоге работает:
Отправка что из imap аккаунта, что из smtp аккаунта.
Работает вебморда почты- Roundcube.
Работает вебморда админки постфика- postfixadmin.
imap работает четко- что положено в папку в аутлуке, то появится и в раундкубе.

Теперь что НЕ работает:
не работает прием почты... совсем.
Как верно заметил Карл- там какая-то фигня с sql.
Были проблемы с парой скриптов (Ctrl+C - CTRL+V из чужих постов дал о себе знать), но там я быстренько победил.

А вот самая большая проблема со скриптом, который отрабатывает при получении почты ИЗ ВНЕ.

вот он:
mysql_virtual_mailbox_maps.cf
user = postfix
password = SuperMegaLongUnbrutablePassword
hosts = localhost
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'

Отправлял тесты с gmail.com учетки.
Так вот- возвращается с формулировкой- Postfix не нашел пользователя ddd (тестовый мой).
Это меня поразило и я начал копать.
Поправил вышеприведенный файл с целью получить в табличку свою собственную запись, которую получаем для проверки пользователя в списке имеющихся.
В итоге если стоит флаг %s, то в запись идет gmail.com.
Весело- подумал я.

Исправлял флаги на %u или %d. В одном случае вернулся все тот-же gmail.com, в другом ничего не записалось (пустая строка).

Так и не понял что за фигня.

Если кто знает- подскажите.
Конфиги все выше лежат (правил в них только smtpd_**_restrictions, что к сути текущей проблемы не относится)
« Последнее редактирование: 03 Октября 2012, 19:01:06 от Dee »

Оффлайн Karl500

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2267
    • Просмотр профиля
Re: Почтовый сервер Dovecot+SQL+postfix+postfixadmin+RoundCube+12.04
« Ответ #9 : 03 Октября 2012, 21:32:52 »
Вы бы для определенности (а то приходится слишком много гадать о структуре Вашей БД) дали бы ссылку, откуда копируете конфигурацию... Почему maildir вытаскиваете? Вам нужно не maildir вытащить, а найти и вытащить имя (ddd в Вашем случае).
« Последнее редактирование: 03 Октября 2012, 21:40:49 от Karl500 »

Оффлайн Dee

  • Автор темы
  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: Почтовый сервер Dovecot+SQL+postfix+postfixadmin+RoundCube+12.04
« Ответ #10 : 04 Октября 2012, 10:14:14 »
Вы бы для определенности (а то приходится слишком много гадать о структуре Вашей БД) дали бы ссылку, откуда копируете конфигурацию... Почему maildir вытаскиваете? Вам нужно не maildir вытащить, а найти и вытащить имя (ddd в Вашем случае).
Где брал начальный конфиг-там уже нет (закрыт сайт за неоплату).
По поводу структуры:
таблица mailbox, содержит в себе:
|  username  |    password  |  name  |  maildir  |  quota  |  local_part  |  domain  |  created  |  modified  |  active  |
|            |            |        |           |         |              |          |           |            |          |
|ddd@domen.ru|тут хэш     |Name    |ddd@@domen.ru/| 0    | ddd          | domen.ru| дата      | дата       |  1       |

Как я понимаю последовательность требуемых действий:
Постфикс получает в строке с названием %s адрес получателя. Он може быть либо ddd, либо ddd@domen.ru.
Далее ему необходимо понять куда эту почту положит на диске-название директории относительно хранилища почтовых ящиков (virtual_mailbox_base).
Для этого он делает запрос к базе postfix в следующем виде
SELECT maildir FROM mailbox WHERE username='%s' AND active='1'
т.е. в ответ на запрос он должен получить ddd@domen.ru/, чтобы в итоге положить письмо по пути /var/mail/vmail/ddd@domen.ru/ в папку для входящих.



Пользователь решил продолжить мысль 04 Октября 2012, 10:14:36:
Так вот, раскурил таки тему.

Пользователь решил продолжить мысль 04 Октября 2012, 10:39:40:
1. В Конфиге main.cf postfix-а ошибка закралась тут:
virtual_mailbox_base = /var/mail/vmail

Правильный вариант
virtual_mailbox_base = /var/mail/vmail/
т.е. на конце / обязателен т.к. в итоге получалось у него /var/mail/vmailddd@domen.ru/,а не /var/mail/vmail/ddd@domen.ru/.
Это первый косяк.

2. В конфиге master.cf (я его почему-то забыл привести в первом посте) должна быть строчка написана так:
dovecot unix    -       n       n       -       -       pipe
  flags=DRhu user=vmail:mail argv=/usr/lib/dovecot/deliver -f ${recipient} -d ${user}@${nexthop} -m ${extension}

а была написана так
dovecot unix    -       n       n       -       -       pipe
  flags=DRhu user=vmail:mail argv=/usr/lib/dovecot/deliver -f ${recipient} -d ${user}@${nexthop} -n -m ${extension}.
Самое интересное, что постификс и довкотнихрена не ругались на то, что параметр "-n" не должен там быть и ему не нравится это в работе.

конфиг у меня сейчас такой и работает:
(Нажмите, чтобы показать/скрыть)


3. И третий косяк был с правами доступа на файды-папки в /run/dovecot/=auth-userdb.
Не хватало ему флажков.

Выяснил достаточно просто - в запрос sql на определение maildir в соответствие username поставил ddd@domen.ru.
И посыпались только тогда ошибки в логи.
Пока так.

Допишу еще, если что-то обнаружу

« Последнее редактирование: 04 Октября 2012, 10:39:40 от Dee »

Оффлайн Karl500

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2267
    • Просмотр профиля
Re: Почтовый сервер Dovecot+SQL+postfix+postfixadmin+RoundCube+12.04
« Ответ #11 : 04 Октября 2012, 10:51:35 »
Ну, у меня только один вопрос. Зачем в БД иметь: а) username b) maildir c) local_part d) domain ? Тут как минимум два поля лишние - вычисляются из двух других...

Оффлайн Dee

  • Автор темы
  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: Почтовый сервер Dovecot+SQL+postfix+postfixadmin+RoundCube+12.04
« Ответ #12 : 04 Октября 2012, 11:31:32 »
Ну, у меня только один вопрос. Зачем в БД иметь: а) username b) maildir c) local_part d) domain ? Тут как минимум два поля лишние - вычисляются из двух других...
Ну это уже другой вопрос- для своих нужд, не связанных на прямую с работой почтовой системы.

У меня вот остался последний замечательный косяк.
На самом деле почта у меня ходила из вне только потому, что в файле с запросом к sql на определение maildir в соответствие username ОСТАЛОСЬ СТОЯТЬ значение ddd@domen.ru.
И почтовик благополучно мне все складывал.

Поставил изначальное значение %s (думал что там ddd@domen.ru)- не работает (в лог вообще пишет про Relay access Denied и на гугл возвращается с такой-же формулировкой).
Писал concat('%s','@','%d') (думал что там ddd) -не работает, аналогичная ошибка.

%s в табличку мне всеравно пишет gmail.com

WTF?

Оффлайн Karl500

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2267
    • Просмотр профиля
Re: Почтовый сервер Dovecot+SQL+postfix+postfixadmin+RoundCube+12.04
« Ответ #13 : 04 Октября 2012, 12:16:18 »
Запросы к mysql описаны вот тут: http://www.postfix.org/mysql_table.5.html

Если речь о virtual_mailbox_maps, то работает (должно работать) это примерно так.

- postfix получает письмо на адрес ddd@domain.ru
- определяет по virtual_domain_maps, что domain.ru - это к нам
- лезет в таблицу с запросом по virtual_mailbox_maps чтобы определить, а есть ли адрес ddd@domain.ru; при этом строка поиска есть "ddd@domain.ru" (здесь Вы сами должны формировать правильный запрос; т.е. %s - это ddd@domain.ru, %n - это ddd, %d - domain.ru и т.д. - ссылка на документ выше)
- ожидает в ответ (как результат поиска) путь типа domain.ru/ddd/

Т.е. ( в случае, если в БД втаблице users хранится email) вполне достаточно следующего запроса (реальный запрос с моего сервера):

query = SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') FROM users WHERE email='%s'
В Вашем случае в конец можно дописать  AND active = '1'

(естественно, это предполагает, что папки расположены соотв. образом. В Вашем случае по-другому сформируйте ответ, если нужно)


Пользователь решил продолжить мысль 04 Октября 2012, 12:21:47:
Relay Access Denied - это другая болезнь. Это означает, что он не видит Вашего домена в списке виртуальных доменов (или локальных доменов - смотря как у Вас это организовано). Т.е. до анализа адреса не дошло: отлуп еще на этапе определения домена.
« Последнее редактирование: 04 Октября 2012, 12:24:57 от Karl500 »

Оффлайн Dee

  • Автор темы
  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: Почтовый сервер Dovecot+SQL+postfix+postfixadmin+RoundCube+12.04
« Ответ #14 : 04 Октября 2012, 15:54:25 »
Сделал!

Замучал таки я эту связку!
Спасибо за наводки и правильные вопросы!

Конфиги рабочие для нее выложу чуть позже, со структурой баз, запросами и т.п.

Пока еще буду прикручивать procmail к этому безобразию.

 

Страница сгенерирована за 0.028 секунд. Запросов: 21.