Инструменты пользователя

Инструменты сайта


аутентификация_postfix

**Это старая версия документа!**

Один из самых простых методов аутентификации для smtp сервера это использование sasl. Для пользователей работающих в локальной сети системный администратор может настроить список доверенных сетей и пользователи смогут работать без аутентификации, но если сервер стоит на хостинге или пользователи хотят подключаться к нему из внешней сети сразу же требуется аутентификация.

Логика работы почтового сервера postfix такова, если ты являешься аутентифицированным пользователем или работаешь в довереннй сети, то postfix позволяет отправлять через него сообщения на другие почтовые сервера другим пользователям, если пользователь не прошел аутентификацию, то он может отправить почту только пользователям локального сервера.

Итак приступим к настройке аутенификации.

SASL позволяет проверять аутентичность пользователя несколькими способами, причем для каждого приложения этот способ может быть задан отдельно с помощью конфиг файла /usr/lib/sasl2/appname.conf Нас интересует smtpd, так что создайте файл /usr/lib/sasl2/smtpd.conf и добавляйте туда 2 строки

pwcheckmethod: auxprop
mech
list: login plain
(!!!В SASL версий 1.х этот метод называется не auxprop, а sasldb!!!) В данном случае используется метод чтения из базы данных виртуальных пользователей /etc/sasldb2 и мэйл-клиенту на выбор предлагается два механизма аутентифицировать пользователя - login и plаin password (для начала хватит - Аутглюк использует login, Mozilla, Bat! - plain). После чего создаем эту базу данных -

saslpasswd2 -c -u mail.rogaikopyta.ru -a smtpauth test\\

, те в данном случае вы позволяете аутентифицироваться пользователю с адресом test@mail.rogaikopyta.ru Потом вас попросят ввести пароль (ваше дело какой, но лучше выберете testpass ). Поскольку постфикс будет напрямую читать файл /etc/sasldb2, то поправтьте права на этот файл:

chown postfix /etc/sasldb2\\

Просмотреть всех sasl пользователей можно командой sasldblistusers2 (в нашем случае вывод будет такой:

sasldblistusers2
saslpasswd2 -c -u mail.rogaikopyta.ru -a smtpauth test
test@mail.rogaikopyta.ru: userPassword
test@mail.rogaikopyta.ru: cmusaslsecretOTP
удалить - saslpasswd2 -d test@mail.rogaikopyta.ru\\

В принципе на этом все - можно конфигурировать постфикс. Добавлю только, что из других способов аутентификации можно использовать чтение напрямую логинов системных пользователей из /etc/shadow (pwcheckmethod: shadow - но как вы понимаете в этом случае postfix должен обладать групповыми правами root), или посредством демонов pwcheck (pwcheckmethod: pwcheck) и saslauthd (pwcheck_method: saslauthd) запущенных из-под рута (в первом случае командой - pwcheck, но предварительно создайте директорию /var/pwcheck). Если кто знает как скрестить saslauthd и постфикс пишите сюда.

Конфигурируем postfix

Во первых редактируете файл /etc/postfix/master.cf

smtp inet n n n - - smtpd

После чего правите main.cf добавляя параметры:

smtpdsaslauthenable = yes
smtpd
saslsecurityoptions =
smtpdsasllocaldomain =
smtpd
clientrestrictions = permitsaslauthenticated
smtpd
senderrestrictions = permitsaslauthenticated
broken
saslauthclients = yes
и добавляете опцию permitsaslauthenticated в список smtpdrecipientrestrictions. Привожу отрывок из своего файла:

smtpdsaslauthenable = yes
smtpd
saslsecurityoptions =
smtpdsasllocaldomain =
smtpd
clientrestrictions = permitsaslauthenticated
smtpd
senderrestrictions = permitsaslauthenticated
broken
saslauthclients = yes
smtpdrecipientrestrictions =
permitsaslauthenticated
permitmynetworks
reject
unauthdestination
reject
invalidhostname
reject
nonfqdnhostname
rejectnonfqdnsender
reject
nonfqdnrecipient
rejectunknownsenderdomain
reject
unknownrecipientdomain
rejectunauthpipelining
checkheloaccess hash:/etc/postfix/helochecks
check
clientaccess hash:/etc/postfix/clientchecks
rejectrblclient list.dsbl.org
rejectrblclient cbl.abuseat.org
rejectrblclient relays.ordb.org
rejectrblclient opm.blitzed.org
rejectrblclient sbl.spamhaus.org
permit

По поводу smtpdsasllocal_domain =. Этот параметр (по идее) позволяет регистрироваться пользователям с именем без доменной части (например просто test, а не test@mail.rogaikopyta.ru). Насколько я понял, в таком случае postfix будет в качестве доменной части цеплять $myhostname (те при добавлении пользователя мы предполагали, что myhostname = mail.rogaikopyta.ru). В принципе это не важно, если вам удасться обучить пользователей регистрироваться своим полным именем (user@rogaikopyta.ru) и вы добавите пользователя командой saslpasswd2 -c -u rogaikopyta.ru -a smtpauth user. Теперь делаем postfix reload и с любой машины в вашей сетке попробуйте протестировать его (жирным отмечены команды, которые вводите вы, остальное - ответ сервера) Quote:

$telnet mail.rogaikopyta.ru 25
Trying 192.168.1.254…
Connected to mail.rogaikopyta.ru.
Escape character is '^]'.
220 mail.rogaikopyta.ru ESMPT Postfix (2.0.16)
ehlo rogaikopyta.ru
250-mail.rogaikopyta.ru
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250 8BITMIME
auth plain
334
dGVzdAB0ZXN0AHRlc3RwYXNz
235 Authentication successful

Ругательства после ответа сервера 334 - это test и testpass base 64encoded ( printf 'test\0test\0testpass' | mmencode). Если у вас пароль testpass, можете просто скопировать эту строчку, если нет - то ваш пароль вам придется перкодировать с помощью mmencode. На этом я и закончу. Вам остается только выкинуть из sasldb2 пользователя test и накидать туда реальных пользователей.

Благодарности Andrew E Kuznetsoff ака Разгильдяю на обкуренной кошке за помощь в тестировании моей установки postfix и cyrus-sasl.

Ссылки Рекомендую также посмотреть ресурс Мультика http://www.multik.ru/linux/ispmailv2/ - там настройка гораздо более серьезная.

аутентификация_postfix.1360063050.txt.gz · Последнее изменение: 2013/02/05 15:17 (внешнее изменение)

DokuWiki Appliance - Powered by TurnKey Linux