Уехал шеф на море на прошлой неделе, сегодня спросил его, читает ли он почту. Как, оказалось, читает, только проблема с отправкой. Так что будем настраивать SMTP авторизацию.
На сервере, ясное дело под FreeBSD
, по умолчанию стоит sendmail. Его мы и будем настраивать. Для начала нам нужен Cyrus SASL – пакет, который содержит простую аутентификацию и слой безопасности (Simple Authentication and Security Layer) — метод для добавления поддержки аутентификации в протоколы соeдинения.
1 2 | cd /usr/ports/security/cyrus-sasl2 make install clean |
Далее нужно пересобирать sendmail с поддержкой SASL. Я решил вместо этого установить sendmail с портов
1 2 | cd /usr/ports/mail/sendmail-sasl/ make install clean |
Приводим к такому виду наш /etc/mail/mailer.conf
1 2 3 4 5 6 | sendmail /usr/local/sbin/sendmail send-mail /usr/local/sbin/sendmail mailq /usr/local/sbin/sendmail newaliases /usr/local/sbin/sendmail hoststat /usr/local/sbin/sendmail purgestat /usr/local/sbin/sendmail |
Добавим в /etc/mail/sendmail.mc (/etc/mail/youdomen.mc)
1 2 3 4 5 | dnl SASL Authentication for relaying dnl TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 PLAIN LOGIN')dnl define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 PLAIN LOGIN')dnl dnl |
В каталоге /etc/mail делаем
1 2 | make make install |
Перезапускаем sendmail.
Теперь создаем базу SASL2 (/etc/sasldb2) пользователей, кому можно давать доступ:
1 | saslpasswd2 -a sendmail username |
Использование данных из системной базы паролей
Если пакет cyrus-sasl2-saslauthd не установился во время установки SASL, то устанавливаем
1 2 | cd /usr/ports/security/cyrus-sasl2-saslauthd make install clean |
Добавляем в /etc/rc.conf
1 | saslauthd_enable="YES" |
и запускаем.
Правим /usr/local/lib/sasl/Sendmail.conf
с
1 | pwcheck_method: saslauthd |
на
1 | pwcheck_method: pam |
Также добавил в конфиг sendmail’а
1 | define('confAUTH_OPTIONS', 'A')dnl |
Хотя наверное будет работать и без этой опции, не проверял.
Все, теперь логин и пароль используется так же из /etc/passwd
Использованием TLS/SSL
Совсем забыл о безопасности.
У меня OpenSSL уже установлен. Конфиг лежит в /etc/ssl.
Создаем каталог для хранения ключей/сетификатов
1 | mkdir -p /etc/mail/certs |
Далее переходим в него и создаем ключи и сетификат
1 2 3 4 | cd /etc/mail/certs openssl req -new -x509 -keyout cakey.pem -out cacert.pem -days 365 openssl req -nodes -new -x509 -keyout sendmail.pem -out sendmail.pem -days 365 chmod 600 ./sendmail.pem |
Далее редактируем конфиг sendmail’а, добавляя туда:
1 2 3 4 5 6 7 | define(`confCACERT_PATH', `/etc/mail/certs')dnl define(`confCACERT', `/etc/mail/certs/cacert.pem')dnl define(`confSERVER_CERT', `/etc/mail/certs/sendmail.pem')dnl define(`confSERVER_KEY', `/etc/mail/certs/sendmail.pem')dnl define(`confCLIENT_CERT', `/etc/mail/certs/sendmail.pem')dnl define(`confCLIENT_KEY', `/etc/mail/certs/sendmail.pem')dnl DAEMON_OPTIONS(`Family=inet, Port=465, Name=MTA-SSL, M=s')dnl |
и генерим конфигурационный файл Sendmail:
1 2 | cd /etc/mail make install |
перезапускаем SendMail и используєм SSL.
Нравится эта статья? Подпишитесь на RSS-ленту и получите еще больше классной информации!
Один отзыв
Bosyak 19 июля 2009 в 13:23
Шеф остался доволен.