forum.bitel.ru
http://forum.bitel.ru/

Postfix+Mysql+Virtual domains
http://forum.bitel.ru/viewtopic.php?f=11&t=2075
Страница 1 из 1

Автор:  Heggi [ 26 мар 2009, 02:20 ]
Заголовок сообщения:  Postfix+Mysql+Virtual domains

У кого-нить получилось сделать по Вики? http://wiki.bgbilling.ru/index.php/Post ... /BGBilling

Мало того, что в статье больше половины упущено (и пришлось много погуглить, чтобы сервер хотя бы запустился), так эта собака еще и не работает... Почту принимать не хочет (ссылается на отсутствие юзеров, хотя ящики заведены)

Лог запросов в MySQL:
14 Connect postfix@localhost on bgbilling
14 Query SELECT account FROM email_account_3 WHERE account='info' AND status = '0'

Если этот запрос сделать вручную - то результат - 1 строка, однако постфикс ругается:

Mar 25 17:04:50 server1 postfix/local[5070]: E45BA14E67C: to=<info@ххх.net>, relay=local, delay=0.03, delays=0.01/0/0/0.02, dsn=5.1.1, status=bounced (unknown user: "info")

Кто-нить поднял схему, если имеется несколько доменных имен?

Автор:  Heggi [ 28 мар 2009, 20:33 ]
Заголовок сообщения: 

Так.. ясно... Либо народ не хочет заморачиваться, либо ни к чему так и не пришел...

Через пару дней выложу рецепт по применению Postfix+bgBilling+MySQL+Virtual Domains

Автор:  Heggi [ 29 мар 2009, 09:40 ]
Заголовок сообщения: 

Собственно рецепт. Я все настраивал на Gentoo.
Предположим, что имеем 2 домена domain1.ru и domain2.ru

/etc/postfix/main.cf
Цитата:
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
mail_owner = postfix
default_privs = nobody
myhostname = mail.domain1.ru
inet_interfaces = all
mydestination =
unknow_local_recipients_reject_code = 550
mynetworks_style = subnet
mynetworks = 127.0.0.0/8, 10.0.0.0/24
mail_spool_directory = /var/spool/mail
sendmail_path = /usr/sbin/sendmail
message_size_limit = 10240000
bounce_size_limit = 65536
header_size_limit = 32768
allow_untrusted_routing = no
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination

relay_domains =
relay_host =

virtual_alias_maps = hash:/etc/postfix/virtual
virtual_transport = maildrop
virtual_mailbox_domains = domain1.ru domain2.ru
#virtual_mailbox_base = /var/mail/vhosts
virtual_mailbox_maps = mysql:/etc/postfix/mysqlvirtual.cf
local_recipient_maps = $virtual_mailbox_maps
virtual_uid_maps = static:207
virtual_gid_maps = static:207
virtual_minimum_uid = 207
maildrop_destination_recipient_limit = 1

disable_vrfy_command = yes


Теперь самое интересное:
/etc/postfix/mysqlvirtual.cf
Цитата:
hosts = 127.0.0.1
dbname = bgbilling
user = логин
password = пароль
query = SELECT CONCAT(account,IF(did=1,'@domain1.ru',IF(did=2,'@domain2.ru','@unknown_domain'))) FROM email_account_3 WHERE account='%u' AND status = '0'

Postfix, делая запрос в базу, передает только username, а ожидает username@domain. Т.к. в таблице в явном виде не хранится такое значение, надо его создать искуственно, а т.к. доменов несколько, используем поле did, в котором число указывает на номер домена (тот, что вы указывали в конфигурации модуля)

/etc/postfix/master.cf
Цитата:
maildrop unix - n n - - pipe
flags=DRhu user=mail argv=/etc/postfix/maildropplus ${recipient} ${user}


Это взято из вики и немного подправлено:
/etc/postfix/maildropplus
Цитата:
#!/bin/bash
if ! cd /var/mail/$1; then
/usr/bin/maildirmake /var/mail/$1;
chown -R mail:mail /var/mail/$1;
chmod -R 700 /var/mail/$1;
/usr/bin/maildrop -w 90 -d $2;
else
/usr/bin/maildrop -w 90 -d $2;
fi
exit $?


/etc/courier/authlib/authdaemonrc
Цитата:
authmodulelist="authmysql"
authmodulelistorig="authmysql"


/etc/courier/authlib/authmysqlrc
Цитата:
MYSQL_SERVER 127.0.0.1
MYSQL_USERNAME логин
MYSQL_PASSWORD пароль
MYSQL_SOCKET /var/run/mysqld/mysqld.sock
MYSQL_PORT 3306
MYSQL_OPT 0
MYSQL_DATABASE bgbilling
MYSQL_USER_TABLE email_account_3
MYSQL_CLEAR_PWFIELD email_account_3.password
#uid и gid взяты для юзера и группы mail
MYSQL_UID_FIELD 8
MYSQL_GID_FIELD 12
MYSQL_LOGIN_FIELD email_account_3.account
MYSQL_HOME_FIELD '/var/mail/'
MYSQL_MAILDIR_FIELD CONCAT("/var/mail/",email_account_3.account,IF(did=1,'@domain1.ru',IF(did=2,'@domain2.ru','@unknown_domain')),"/")
MYSQL_QUOTA_FIELD CONCAT(email_account_3.quota,"000S")
MYSQL_WHERE_CLAUSE email_account_3.status='0'


Вот и все. Не забыть только запустить postfix и courier-authdaemon и добавить их в автозагрузку.

Автор:  Администратор [ 01 апр 2009, 15:33 ]
Заголовок сообщения: 

Занес в WiKi ссылку. http://wiki.bgbilling.ru/index.php/Post ... al_domains
Может кто оформит потом ) хоть не потеряется.
В 4.6 будет возможность ведения учета аккаунтов просто в сторонней SQL базе, без LDAP.

Автор:  snark [ 01 апр 2009, 16:00 ]
Заголовок сообщения: 

Б-г знает когда запустил связку cyrus как POP3/IMAP + sendmail (на фре он штатный, а хотелось обойтись без доп. софта) как SMTP + MySQL как хранилище логинов/паролей и совершенно не пойму что сложно в том чтобы прикрутить номер договора как имя ящика, а пароль статистики как пароль на ящик, ну или иные данные брать как логин/пароль из биллинга ...

Автор:  skyb [ 03 сен 2009, 07:05 ]
Заголовок сообщения: 

Не хочет у меня по этим настройкам работать
вот обсуждение где я пытался его наладить(постфикс)
http://linuxforum.ru/index.php?showtopi ... ntry930869


что мне не кто не поможет???

Автор:  skyb [ 27 май 2010, 09:00 ]
Заголовок сообщения:  Re: Postfix+Mysql+Virtual domains

А может ктонибудь выложить рабочие конфиги постфикса??
а то бъюсь бъюсь и не получается :(

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/