воскресенье, 20 марта 2011 г.

Postfix + smtp auth

У нас есть в наличии (Debian Squeeze)
Postfix+Postfix admin+courier-imap+courier pop3 + mysql

Postfix принимает smtp для пересылки во внеху только от доверенных сетей, в данном случае такая пересылка происходит только от скриптов сайта, так что разрешение стоит только на локалхост
[/etc/postfix/main.cf]
mynetworks = 127.0.0.0

Со внехи письма приходят только для тех доменов, которые обслуживаются этим почтовиком (далее эти письма юзера забирают через pop3 или imap).

Но появляется задача - отправлять из внешних сетей через наш почтовик во внешние сети (при использовании почтовых клиентов), естественно такую операцию можно разрешить только с авторизацией.
[/etc/postfix/main.cf]
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = cyrus
smtpd_sasl_enable=yes
smtpd_sasl_path = smtpd
broken_sasl_auth_clients = yes









Ставим пакеты
apt-get install sasl2-bin libsasl2-modules-sql libsasl2-modules









Теперь правим файлик (можете закоментировать там все и вставить это)
[/etc/default/saslauthd ]
START=yes
DESC="SASL Authentication Daemon"
NAME="saslauthd"
MECHANISMS="rimap"
MECH_OPTIONS=""
THREADS=5
OPTIONS="-r -c -O localhost -m /var/spool/postfix/var/run/saslauthd"





Мы уже настроили postfixadmin и он создал необходимые таблицы в mysql
теперь создаем и редактируем файл
[/etc/postfix/sasl/smtpd.conf]
pwcheck_method: auxprop
auxprop_plugin: sql
sql_engine: mysql
sql_hostnames: 127.0.0.1
sql_user: userpostfix
sql_passwd: 123456789
sql_database: postfixdb
sql_select: select
clear from mailbox where username = '%u@%r' and active = '1'
log_level: 2
mech_list: PLAIN LOGIN


(понимания зашифрованных паролей я добиться не смог, выход - создать в таблице поле clear и запись в него незашифрованного пароля для доступа с SMTP, в таком случае лучше использовать отличный пароль, чтоб при его перехвате злоумышленник не смог читать ваши письма а только лишь смог заниматься пересылкой почты)

Далее делаем кое какие штришки
mkdir -p /var/spool/postfix/var/run/mysqld
chown mysql /var/spool/postfix/var/run/mysqld
ln /var/run/mysqld/mysqld.sock /var/spool/postfix/var/run/mysqld/mysqld.sock
 


Если захотите осилить этот материал более подробно то


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

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