Уехал шеф на море на прошлой неделе, сегодня спросил его, читает ли он почту. Как, оказалось, читает, только проблема с отправкой. Так что будем настраивать 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-ленту и получите еще больше классной информации!