Один из самых простых методов аутентификации для smtp сервера это использование sasl. Для пользователей работающих в локальной сети системный администратор может настроить список доверенных сетей и пользователи смогут работать без аутентификации, но если сервер стоит на хостинге или пользователи хотят подключаться к нему из внешней сети сразу же требуется аутентификация. Логика работы почтового сервера postfix такова, если ты являешься аутентифицированным пользователем или работаешь в довереннй сети, то postfix позволяет отправлять через него сообщения на другие почтовые сервера другим пользователям, если пользователь не прошел аутентификацию, то он может отправить почту только пользователям локального сервера. ====== Итак приступим к настройке аутенификации. ====== SASL позволяет проверять аутентичность пользователя несколькими способами, причем для каждого приложения этот способ может быть задан отдельно с помощью конфиг файла /usr/lib/sasl2/appname.conf Нас интересует smtpd, так что создайте файл /usr/lib/sasl2/smtpd.conf и добавляйте туда 2 строки ''pwcheck_method: 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 (pwcheck_method: shadow - но как вы понимаете в этом случае postfix должен обладать групповыми правами root), или посредством демонов pwcheck (pwcheck_method: pwcheck) и saslauthd (pwcheck_method: saslauthd) запущенных из-под рута (в первом случае командой - pwcheck, но предварительно создайте директорию /var/pwcheck). Если кто знает как скрестить saslauthd и постфикс пишите сюда. Конфигурируем postfix Во первых редактируете файл /etc/postfix/master.cf smtp inet n n n - - smtpd После чего правите main.cf добавляя параметры: ''smtpd_sasl_auth_enable = yes\\ smtpd_sasl_security_options =\\ smtpd_sasl_local_domain =\\ smtpd_client_restrictions = permit_sasl_authenticated\\ smtpd_sender_restrictions = permit_sasl_authenticated\\ broken_sasl_auth_clients = yes\\ '' и добавляете опцию permit_sasl_authenticated в список smtpd_recipient_restrictions. Привожу отрывок из своего файла: ''smtpd_sasl_auth_enable = yes\\ smtpd_sasl_security_options =\\ smtpd_sasl_local_domain =\\ smtpd_client_restrictions = permit_sasl_authenticated\\ smtpd_sender_restrictions = permit_sasl_authenticated\\ broken_sasl_auth_clients = yes\\ smtpd_recipient_restrictions =\\ permit_sasl_authenticated\\ permit_mynetworks\\ reject_unauth_destination\\ reject_invalid_hostname\\ reject_non_fqdn_hostname\\ reject_non_fqdn_sender\\ reject_non_fqdn_recipient\\ reject_unknown_sender_domain\\ reject_unknown_recipient_domain\\ reject_unauth_pipelining\\ check_helo_access hash:/etc/postfix/helo_checks\\ check_client_access hash:/etc/postfix/client_checks\\ reject_rbl_client list.dsbl.org\\ reject_rbl_client cbl.abuseat.org\\ reject_rbl_client relays.ordb.org\\ reject_rbl_client opm.blitzed.org\\ reject_rbl_client sbl.spamhaus.org\\ permit'' По поводу smtpd_sasl_local_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/ - там настройка гораздо более серьезная.