суббота, 17 сентября 2011 г.

Postfixadmin, exim и dovecot

Итак:

В postfixadmin не получалось добавить алиас для отправки копии письма на другой адрес, своего рода forward. Выдавало что-то вроде

This email address already exists, please choose a different one!

Как оказалось, alias надо добавлять вовсе не "глобально". Для начала надо было изменить в конфиге config.inc.php два параметра:

$CONF['alias_control'] = 'YES';
$CONF['alias_control_admin'] = 'YES';


после этого в списке Mailboxes появиться ссылка Alias, пройдя по которой и можно задать списко ящиков, каждый в новую строку. Они затем отобразятся в поле To = "Mailbox и ваш доп.ящик"

================================

Теперь добавим авторизацию для dovecot.
В /etc/dovecot/dovecot.conf в секции "auth default"
Пароли будем забирать из базы postfixadmin - имя базы, юзер = mail

# SQL database
passdb sql {
args = /etc/dovecot/dovecot-sql.conf
}

а настройки юзеров будут статические.

userdb static {
args = uid=vmail gid=vmail home=/home/vmail/%u
}

т.е. папки юзеров будут создаваться от имени vmail в /home/vmail/юзер

socket listen {
client { # демон авторизации, его будет использовать exim
path = /var/run/dovecot/auth-client
mode = 0666
}
master { #для локальной досавки - LDA
path = /var/run/dovecot/auth-master
mode = 0666
}
}

И сама локальныя доставка, т.е. exim будет почту передавать dovecot, что бы тот распихал ее по реальным папкам в ящиках.

protocol lda {
postmaster_address = postmaster@example.com
auth_socket_path = /var/run/dovecot/auth-master
}

В /etc/dovecot/dovecot-sql.conf

connect = host=localhost dbname=mail user=mail password=mailnew
default_pass_scheme = plain <- пароль в открытом виде, на боевой системе не допустимо!
password_query = SELECT `username` as `user`, `password` FROM `mailbox` WHERE `username` = '%n@%d' AND `active`='1'


Теперь про exim
Авторизация с использованием dovecot
Создаем /etc/exim4/conf.d/auth/05_dovecot_login

dovecot_login:
driver = dovecot
public_name = LOGIN
server_socket = /var/run/dovecot/auth-client
# setting server_set_id might break several headers in mails sent by authenticated smtp. So be careful.
server_set_id = $auth1

dovecot_plain:
driver = dovecot
public_name = PLAIN
server_socket = /var/run/dovecot/auth-client
server_set_id = $auth1

Настройка подключения к базе mysql - понадобиться для форвардинга
добавим в /etc/exim4/conf.d/main/02_exim4-config_options

hide mysql_servers = localhost/mail/mail/mailnewzulu145:/etc/exim4/conf.d/main

настроим, что локальную доставку LDA
редактируем /etc/exim4/conf.d/router/900_exim4-config_local_user (хотя можно сделать и новый)

local_user:
debug_print = "R: local_user for $local_part@$domain"
driver = accept
domains = +local_domains
transport = dovecot_virtual_delivery
cannot_route_message = Unknown user

настроим траспорт
создадим /etc/exim4/conf.d//transport/05-exim4-config_transport_dovecot
dovecot_virtual_delivery:
driver = pipe

debug_print = "T: dovecot_virtual_delivery for $local_part@$domain"

command = /usr/lib/dovecot/deliver -d $local_part@$domain -f $sender_address
# v1.1+: command = /usr/local/libexec/dovecot/deliver -d $local_part@$domain -f $sender_address -a $original_local_part@$original_domain
message_prefix =
message_suffix =
delivery_date_add
envelope_to_add
return_path_add
log_output
user = vmail
temp_errors = 64 : 69 : 70: 71 : 72 : 73 : 74 : 75 : 78

Теперь forward - переадресацию - что бы информация бралась из базы postfixadmin
приведем /etc/exim4/conf.d/router/600_exim4-config_userforward к виду

userforward:
driver = redirect
allow_fail
allow_defer
data = ${lookup mysql{SELECT goto FROM alias \
WHERE address='${local_part}@${domain}' AND domain='${domain}'}}

Комментариев нет:

Отправить комментарий