Главная страница
Навигация по странице:

  • YWRtaW5AYmJiLnJ1AGFkbWluQGJiYi5ydQBzZWNyZXQ= Теперь проверим авторизацию telnet 127.0.0.1 25Trying 127.0.0.1… Connected to 127.0.0.1.

  • 235 2.7.0 Authentication successful QUIT 221 2.0.0 Bye Connection closed by foreign host.

  • LDAP server Uniform Resource Identifier: ldap://10.0.0.3/Обратите внимание — не ldapi! Distinguished name of the search base

  • LDAP account for root: cn=admin,dc=aaa,dc=ruLDAP root account password

  • YWRtaW4AYWRtaW4Ac2VjcmV0 telnet 127.0.0.1 25 Trying 127.0.0.1… Connected to 127.0.0.1. Escape character is ^].

  • 250-VRFY 250-ETRN 250-STARTTLS 250-AUTH PLAIN LOGIN 250-AUTH=PLAIN LOGIN 250-ENHANCEDSTATUSCODES

  • 221 2.0.0 Bye Connection closed by foreign host.

  • Trying 127.0.0.1… Connected to 127.0.0.1. Escape character is ^]. 220 oban.aaa.ru ESMTP Postfix (Ubuntu)

  • 550 5.1.1 : Recipient address rejected: User unknown in virtual mailbox table QUIT 221 2.0.0 Bye Connection closed by foreign host.

  • 4 Краткий отчет о практике (приложение 1). Строки с таким выделением


    Скачать 0.62 Mb.
    НазваниеСтроки с таким выделением
    Дата22.11.2021
    Размер0.62 Mb.
    Формат файлаdoc
    Имя файла4 Краткий отчет о практике (приложение 1).doc
    ТипДокументы
    #278494
    страница4 из 15
    1   2   3   4   5   6   7   8   9   ...   15

    Настройка saslauthd


    Авторизация почтовых пользователей на нашем сервере будет происходить через pam, к которому будет обращаться демон авторизации sasl.

    Сначала выполним следующую команду:

    sudo mkdir -p /var/spool/postfix/var/run/saslauthd

    Затем отредактируем файл /etc/default/saslauthd

    sudo nano /etc/default/saslauthd

    Установим параметр START в yes и заменим строку OPTIONS=«-c -m /var/run/saslauthd» на OPTIONS=«-c -m /var/spool/postfix/var/run/saslauthd -r»

    Создадим файл /etc/pam.d/smtp

    sudo nano /etc/pam.d/smtp

    auth sufficient pam_mysql.so user=mail_admin passwd= host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1

    account sufficient pam_mysql.so user=mail_admin passwd= host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1

    и сменим его права доступа

    sudo chmod o= /etc/pam.d/smtp

    Создаем файл /etc/postfix/sasl/smtpd.conf

    sudo nano /etc/postfix/sasl/smtpd.conf

    pwcheck_method: saslauthd

    mech_list: plain login

    allow_plaintext: true

    и меняем ему владельца и права доступа

    sudo chown postfix /etc/postfix/sasl/smtpd.conf

    sudo chmod og= /etc/postfix/sasl/smtpd.conf

    Добавляем пользователя postfix в группу sasl (это даст Postfix права доступа к saslauthd):

    sudo adduser postfix sasl

    Перезапускаем Postfix и Saslauthd:

    sudo /etc/init.d/postfix restart

    sudo /etc/init.d/saslauthd restart

    Для проверки авторизации создадим пользователя admin@bbb.ru в базе данных (заодно вначале в таблице domains зададим оба наших почтовых домена — aaa.ru и bbb.ru):

    mysql -u root -p

    Enter password:

    Введем пароль mysql



    USE mail;

    INSERT INTO `domains` (`domain`) VALUES ('aaa.ru');

    INSERT INTO `domains` (`domain`) VALUES ('bbb.ru');

    INSERT INTO `users` (`email`, `password`, `quota`) VALUES ('admin@bbb.ru', ENCRYPT('secret'), '10M');

    quit;

    (здесь secret - это пароль нашего пользователя, выберите более подходящий; квоту пользователю мы задаем в размере 10Мбайт)

    Для проверки авторизации нам нужно сгенерить строку, которую нужно передать при авторизации (обратите внимание на обратные слеши перед @ и 0):

    perl -MMIME::Base64 -e 'print encode_base64("admin\@bbb.ru\0admin\@bbb.ru\0secret");'

    YWRtaW5AYmJiLnJ1AGFkbWluQGJiYi5ydQBzZWNyZXQ=

    Теперь проверим авторизацию

    telnet 127.0.0.1 25

    Trying 127.0.0.1…
    Connected to 127.0.0.1.
    Escape character is '^]'.
    220 oban.aaa.ru ESMTP Postfix (Ubuntu)

    EHLO testing

    250-oban.aaa.ru
    250-PIPELINING
    250-SIZE 10240000
    250-VRFY
    250-ETRN
    250-STARTTLS
    250-AUTH PLAIN LOGIN
    250-AUTH=PLAIN LOGIN
    250-ENHANCEDSTATUSCODES
    250-8BITMIME
    250 DSN

    AUTH PLAIN YWRtaW5AYmJiLnJ1AGFkbWluQGJiYi5ydQBzZWNyZXQ=

    (здесь вставляем полученную ранее строку авторизации)

    235 2.7.0 Authentication successful

    QUIT

    221 2.0.0 Bye
    Connection closed by foreign host.

    Если мы получим ответ, отличный от «Authentication successful», то мы где-то ошиблись. Проверить, в чем именно, можно, посмотрев файлы /var/log/auth.log и /var/log/mail.log

    Теперь сделаем аутентификацию по openldap. Установим нужные пакеты:

    sudo apt-get install libpam-ldap

    и ответим на вопросы:

    LDAP server Uniform Resource Identifier:

    ldap://10.0.0.3/

    Обратите внимание — не ldapi!

    Distinguished name of the search base:

    dc=aaa,dc=ru

    LDAP version to use:

    3

    Make local root Database admin:

    Да

    Does the LDAP database require login?

    Нет

    LDAP account for root:

    cn=admin,dc=aaa,dc=ru

    LDAP root account password:



    (конечно, нужное замените на свои параметры). Здесь мы предполагаем, что:

    • ldap-сервер доступен по IP 10.0.0.3

    • корень расположен в dc=aaa,dc=ru

    • администратор ldap-сервера это cn=admin,dc=aaa,dc=ru

    • он имеет пароль

    Редактируем файл

    sudo nano /etc/ldap.conf

    и добавляем в него одну строку после закомментаренной #bind_policy hard

    bind_policy soft

    Редактируем файл

    sudo nano /etc/pam.d/smtp

    и добавляем в него строки

    auth sufficient pam_ldap.so

    account sufficient pam_ldap.so

    Теперь можем проверить аутентификацию ldap-пользователя (предполагаем, что в ldap есть пользователь admin с паролем secret (у которого, кстати, почтовый адрес admin@aaa.ru, но это сейчас неважно; важно понимать, что это — другой пользователь, а не admin@bbb.ru):

    perl -MMIME::Base64 -e 'print encode_base64("admin\0admin\0secret");'

    YWRtaW4AYWRtaW4Ac2VjcmV0

    telnet 127.0.0.1 25

    Trying 127.0.0.1…
    Connected to 127.0.0.1.
    Escape character is '^]'.
    220 oban.aaa.ru ESMTP Postfix (Ubuntu)

    EHLO testing

    250-oban.aaa.ru
    250-PIPELINING
    250-SIZE 10240000
    250-VRFY
    250-ETRN
    250-STARTTLS
    250-AUTH PLAIN LOGIN
    250-AUTH=PLAIN LOGIN
    250-ENHANCEDSTATUSCODES
    250-8BITMIME
    250 DSN

    AUTH PLAIN YWRtaW4AYWRtaW4Ac2VjcmV0

    235 2.7.0 Authentication successful

    QUIT

    221 2.0.0 Bye
    Connection closed by foreign host.

    Для почтовых ящиков локальных пользователей будем использовать LDAP. Заметьте, что мы конфигурируем их как виртуальных пользователей, т.е. локальный домен (aaa.ru) мы занесли в базу данных. Предположим, что локальные пользователи в LDAP расположены в ou=Users,dc=aaa,dc=ru причем их имена записаны в uid а почтовые адреса - в mail.

    Создаем файл /etc/postfix/ldap-mailboxes.cf

    sudo nano /etc/postfix/ldap-mailboxes.cf

    server_host = 10.0.0.3

    server_port = 389

    version = 3

    bind = yes

    bind_dn = cn=admin,dc=aaa,dc=ru

    bind_pw =

    search_base = ou=Users,dc=aaa,dc=ru

    query_filter = (mail=%s)

    result_attribute = mail

    result_filter = %d/%u/

    Меняем права доступа

    sudo chgrp postfix /etc/postfix/ldap-mailboxes.cf

    sudo chmod o= /etc/postfix/ldap-mailboxes.cf

    и меняем строку virtual_mailbox_maps = … в файле /etc/postfix/main.cf

    sudo nano /etc/postfix/main.cf

    virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf ldap:/etc/postfix/ldap-mailboxes.cf

    Для проверки в том же файле временно меняем строку

    #smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

    smtpd_recipient_restrictions = permit_sasl_authenticated, reject_unauth_destination

    (это запрещает доставку писем с локального IP-адреса не в наши виртуальные домены)

    Перезапускаем postfix

    sudo /etc/init.d/postfix restart

    и проверяем работу обоих наших тестовых адресов - test@bbb.ru (который записан в базе данных) и betatest@aaa.ru (который записан в LDAP у пользователя betatest)

    telnet 127.0.0.1 25

    Trying 127.0.0.1…
    Connected to 127.0.0.1.
    Escape character is '^]'.
    220 oban.aaa.ru ESMTP Postfix (Ubuntu)

    HELO test

    250 oban.aaa.ru

    MAIL FROM: aaa@aa.aa

    250 2.1.0 Ok

    RCPT TO: admin@bbb.ru

    250 2.1.5 Ok

    RCPT TO: admin@aaa.ru

    250 2.1.5 Ok

    (если мы попробуем передать на несуществующий адрес, мы получим:)

    RCPT TO: aaa@bbb.ru

    550 5.1.1 : Recipient address rejected: User unknown in virtual mailbox table

    QUIT

    221 2.0.0 Bye
    Connection closed by foreign host.

    Вернем обратно строку в файле /etc/postfix/main.cf:

    sudo nano /etc/postfix/main.cf

    smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

    Для запрета аутентификации в postfix с передачей данных открытым текстом, вставляем в файл /etc/postfix/main.cf

    sudo nano /etc/postfix/main.cf

    smtpd_tls_auth_only = yes

    smtpd_tls_cert_file = /etc/ssl/certs/oban.crt

    smtpd_tls_key_file = /etc/ssl/private/oban.key

    smtpd_use_tls = yes

    и перезапускаем postfix

    sudo /etc/init.d/postfix restart

    Откроем и изменим /etc/aliases

    sudo nano /etc/aliases

    Сделайте так, чтобы postmaster указывал на root, а root указывал на ваше имя пользователя или ваш почтовый адрес, у вас должно получится примерно так:

    postmaster: root

    clamav: root

    root: admin@aaa.ru

    После изменения /etc/aliases вы должны запустить команду

    sudo newaliases
    1   2   3   4   5   6   7   8   9   ...   15


    написать администратору сайта