KOINS.Studio - Articles - Инсталляция и настройка программ - Sendmail + Dovecot

Sendmail + Dovecot

Переходим к настройке сервера

  • Проверяем слушает ли кто-либо порт 25:

    socklist | grep 25

    Если слушает, останавливаем данный сервис и отменяем его автозапуск:
    service name_of_service stop
    chkconfig name_of_service off
  • Проверяем установлен ли sendmail (MTA), dovecot (MDA), cyrus-sasl (Auth), sendmail-cf (Check relay)
    rpm -q sendmail
    rpm -q dovecot
    rpm -q cyrus-sasl
    rpm -q sendmail-cf


    Если нет, устанавливаем
    yum install sendmail
    yum install dovecot
    yum install cyrus-sasl
    yum install sendmail-cf
  • Настраиваем sendmail

    Все конфигурационные файлы находятся в папке /etc/mail/

    Редактируем файл access, в котором указываем, с каких ip можно отправлять почту:

    Connect:localhost.localdomain           RELAY
    Connect:localhost                       RELAY
    Connect:127.0.0.1                       RELAY


    Редактируем файл local-host-names, в котором указываем, за какие имена доменов будет отвечать наш сервер:

    localhost
    my.domain.ru


    Редактируем файл sendmail.mc - основной файл настроек sendmail
    ВАЖНО! Строки в этом файле комментируются при помощи оператора dnl. Каждая строка должна заканчиваться оператором dnl. В не закомментированной строке лишние пробелы, символы, пустые строки до оператора dnl недопустимы.

    Раскомментироватьinclude(`/usr/share/sendmail-cf/m4/cf.m4')dnl

    Закомментировать  define(`SMART_HOST', `smtp.your.provider')dnl
    Применяется, если вы передаёте почту через другой сервер.

    Раскомментироватьdefine(`confAUTH_OPTIONS', `A')dnl
    Включает необходимость аутентификации.

    Раскомментировать строки:
    TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
    Доверенные механизмы аутентификации

    define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

    Доступные механизмы аутентификации

    Добавляем строки:
    FEATURE(`dnsbl', `bl.spamcop.net', `Spam blocked - see http://spamcop.net/bl.shtml?$&{client_addr}')dnl
    FEATURE(`dnsbl', `zen.spamhaus.org', `Spam blocked - see http://www.spamhaus.org/query/bl?ip=$&{client_addr}')dnl

    Проверка DNS имён серверов по серым и чёрным спискам.

    Раскомментируем строки:
    DAEMON_OPTIONS(`Port=smtp, Name=MTA M=Ea')dnl

    Настройка порта, тип сервера, модель работы сервера.

    После всех изменений необходимо выполнить команду
    make -C /etc/mail

    В противном случае изменения не применятся.

    Настраиваем cyrus-sasl
    Редактируем файл /usr/lib/sasl2/Sendmail.conf  
    Проверяем наличие параметров, исправляем, либо добавляем.
    pwcheck_method: saslauthd
    mech_list: login plain


    Запускаем sasl
    /etc/init.d/saslauthd start
  • Настраиваем dovecot.
    Все файлы конфигурации dovecot хранятся в папке /etc/dovecot/.

    Редактируем файл dovecot.conf
    Изменяем строки:
    protocols = pop3
    listen = *, ::


    Редактируем файл ./conf.d/10-auth.conf
    disable_plaintext_auth = no
    auth_mechanisms = plain


    Редактируем файл ./conf.d/10-mail.conf
    Изменяем параметр mail_location
    mail_location = mbox:~/mail:INBOX=/var/mail/%u
    Этот параметр определяет расположение пользовательских каталогов входящей и исходящей почты. Будьте внимательны, каталог inbox (куда складывает почту sendmail) в разных версиях linux может находиться в различных местах.

    mail_uid = 8
    mail_gid = 12

    Параметры должны соответствовать uid и gid пользователю mail.

    Редактируем файл 10-master.conf
    Проверить порт
    service pop3-login {
      inet_listener pop3 {
        port = 110
      }
    }


    Запускаем dovecot
    /etc/init.d/dovecot start
  • Проверка:

    Запускаем sendmail
    /etc/init.d/sendmail start

    Подключаемся на порт 25 по telnet
    telnet my.domain.ru 25
    EHLO localhost
    AUTH LOGIN user

    Если не выдало ошибок, sendmail работает

    Проверка сервера на spam-relay
    http://tests.nettools.ru/
    Предупреждение! Не вводите существующие пароли.
    В поле Mail Relay вводим наше днс имя, ок. Все тесты должны пройти успешно.
    В поле E_Mail Valid вводим один из почтовых ящиков, которые существуют на сервере. Пользователь на сервере должен быть не доступен.

    Проверка общих почтовых ящиков
    http://pingability.com/mailtest.jsp
    Вводим имя сервера, затем пользователя anonimous, root, postmaster, имя существующего пользователя. Пароль любой. Все тесты должны быть неудачными.

  • Дополнительно.

    Если почта будет отправляться с localhost почтовому серверу my.domain.ru необходимо добавить в файл /etc/aliases строку 127.0.0.1 my.domain.ru

    Если почта будет отправляться почтовым клиентом из мира, целесообразнее будет не давать доступ миру к серверу, а добавить проверку отправителя. Для этого редактируем файлы:

    /etc/mail/access
    Добавим строку:
    From:user@my.domain.ru                 RELAY

    /etc/mail/sendmail.mc
    Добавим строку:
    FEATURE(`relay_mail_from')dnl

    Пересобрать настройки и перезапустить sendmail.

    Проверка очереди сообщений выполняется командой mailq. Если писем в очереди слишком много: mailq -v. В логах временные сообщения о недоставке почты не всегда отображаются.

    Если при проверке очереди много писем со статусом Deferred проверьте DNS записи домена TXT и PTR.

    Если письма возвращаются со статусом RBL blocked или DNSBL blocked проверьте чистоту вашего ip:
    http://www.dnsbl.info/

Для добавления новых пользователей:

  • Создать файл /root/nmail.sh в любом каталоге на сервере.

  • Скопировать в него строки
    #!/bin/bash
    #Скрипт для создания новых почтовых ящиков
    echo "Введите имя пользователя:"
    read Mname
    useradd -g users -s /bin/bash -d /home/$Mname $Mname
    cd /home
    mkdir $Mname
    chown $Mname:users $Mname
    cd /home/$Mname
    mkdir mail
    chown $Mname:users mail
    echo "Установка праоля для пользователя $Mname"
    passwd $Mname
  • Выполнить команду chmod +x ./nmail.sh

  • Выполнить его, ввести имя почтового ящика без @example.com, 2 раза пароль.

Для удаления почтового ящика, выполнить команду userdel username без @example.com

Last modification: 09.01.14 11:05