Задача: необходимо установить и настроить почтовый сервер для нескольких почтовых доменов. В качестве МТА я выбрал Exim. Список доменов, пользователей и т.д. будут хранится в MySQL.
Итак, что мы имеем: ОС FreeBSD, на сервере 8 ip-адресов, MySQL сервер уже установлен . Приступаем к установке:

  1. Добавляем в  /etc/make.conf опции для сборки exim (так же у меня указана версия MySQL, c которой собираются порты и в которых используется MySQL):
    DEFAULT_MYSQL_VER=51
    .if ${.CURDIR:N*/usr/ports/mail/exim} == “”
    WITH_MYSQL=yes
    WITH_SPF=yes
    WITH_SRS=yes
    WITHOUT_IPV6=yes
    WITHOUT_MAILSTORE=yes
    WITHOUT_MBX=yes
    WITHOUT_PASSWD=yes
    WITHOUT_PAM=yes
    WITHOUT_AUTH_SPA=yes
    WITHOUT_NIS=yes
    .endif

  2. Устанавливаем exim с поддержкой MySQL из портов:
    cd /usr/ports/mail/exim ; make install clean ; echo ‘exim_enable=”YES”‘ >> /etc/rc.conf

  3. Заменяем sendmail в /etc/mail/mailer.conf на exim:
    sendmail        /usr/local/sbin/exim
    send-mail       /usr/local/sbin/exim
    mailq           /usr/local/sbin/exim -bp
    newaliases      /usr/local/sbin/exim -bi
    hoststat        /usr/local/sbin/exim
    purgestat       /usr/local/sbin/exim

  4. Создаём директорию, в которую exim будет складывать почту (у меня это /home/mail/domains)
    mkdir -p /home/mail/domains ; chown -R mailnull:mail /home/mail

  5. Создаём БД для exim:
    mysqladmin -u root -p create exim_db

  6. Создаём пользователя MySQL и выделяем ему права на БД:
    echo “GRANT SELECT, INSERT, UPDATE, LOCK TABLES, CREATE, DROP, DELETE, INDEX ON exim_db.* TO exim@localhost IDENTIFIED BY ‘Mta_MaileR’” | mysql -u root -p mysql

  7. Создаём структуру таблиц (описание таблиц и полей в конце статьи):
    fetch -v http://www.sysadminpages.com/files/exim/exim_db.sql; mysql -u exim -p exim_db < exim_db.sql

  8. Подключаемся к БД и добавляем записи для 1-го почтового домена (Для примера взял вымешленые имя домена и ip-адрес. Для рабочего почтового сервера необходимо заменить значения на реальные):
    mysql -u exim -p exim_db
    mysql>INSERT INTO domains VALUES(‘example.local’,'mail.example.local’,'10.1.10.1′);
    mysql>INSERT INTO accounts (login, password, maildir, uid, gid, mailquota) VALUES (‘admin@example.local‘, ‘Pass4Admin’, ‘/home/mail/domains/example.local/admin/Maildir’, 26, 26, 2000);

  9. Конфигурируем exim. Конфиг длинный, и поэтому его описание я опускаю. Рабочий конфиг можно взять по адресу:
    http://www.sysadminpages.com/files/exim/configure

  10. Запускаем exim
    /usr/local/etc/rc.d/exim start

  11. Для проверки работоспособности отправляем тестовое письмо
    mail -s ‘test message’ admin@example.local
    test message
    .
    Смотрим лог exim:
    tail /var/log/exim/mainlog
    Если всё правильно настроено, то в логе будут записи примерно следующего содержания:
    2009-07-06 08:26:54 1MNnHZ-000CJx-U5 <= root@srv.example.local U=root P=local S=363
    2009-07-06 08:26:54 1MNnHZ-000CJx-U5 => admin <admin@example.local> R=localuser T=local_delivery
    2009-07-06 08:26:54 1MNnHZ-000CJx-U5 Completed

  12. Устанавливаем dovecot
    cd /usr/ports/mail/dovecot ; make WITH_SSL=yes WITHOUT_IPV6=yes WITH_MYSQL=yes install clean ; echo ‘dovecot_enable=”YES”‘ >> /etc/rc.conf

  13. Конфигурируем dovecot
    mv /usr/local/etc/dovecot.conf /usr/local/etc/dovecot.conf.orig
    cd /usr/local/etc/ ;
    fetch -v http://www.sysadminpages.com/files/dovecot/dovecot.conf ; fetch -v http://www.sysadminpages.com/files/dovecot/dovecot-sql.conf

  14. Запускаем dovecot
    /usr/local/etc/rc.d/dovecot start

  15. Настраиваем почтовый клиент на получение-отправку почты. В качестве логина используем e-mail адрес.

Описание таблиц БД exim_db:

Таблица accounts – учётные записи пользователей
Таблица aliases – алиасы для почтовых адресов
Таблица domains – имена почтовых доменов, адреса МХ-ов и их ip-адресов
Таблица spam_domains – список “чёрных” доменов
Таблица spam_emails – список “чёрных” почтовых адресов
Таблица spam_ip_senders – список “чёрных” ip-адресов
Таблица white_domains – список “белых” доменов
Таблица white_emails – список “белых” почтовых адресов
Таблица white_ip_senders – список “белых” ip-адресов

P.S. Через несколько дней допишу как добавить SSL/TLS для почтовых серверов, антивирус и Spamassassin.

xLDen>ru GoogleC
Spamassassin

Похожие записи:


posted by admin 07/07/2009 12:00     |     read comments (11)

Комментарии к статье “FreeBSD: Настройка почтового сервера на базе Exim, MySQL и Dovecot”:

  1. FreeBSD: Настройка почтового сервера на базе Exim, MySQL и Dovecot | Записки старого сисадмина:

    [...] Гостевой пост от sysadminpages.com [...]

  2. Rinat:

    Подписался на РСС канал, буду следить =)

  3. Lexa:

    Начало хорошее! Добавил в закладки – прочитаю чуть попозже.

  4. Stas:

    Интересный пост. Добавил в мемори.

  5. mitay:

    очень интересно! ещё интересней было бы увидеть заявленные описания по добавлению SSL/TLS для почтовых серверов, антивирус и Spamassassin

  6. cristal:

    Подскажите пожалуйста, где можно найти продолжение этой статьи ?
    Буду оч благодарен.

  7. admin:

    Допишу в ближайшее время

  8. karpekin:

    http://www.sysadminpages.com/files/exim/configure – неплохо бы выложить построчный конфиг(для ламеров ;-) .

  9. alik:

    Пожалуйста выложите подстрочный конфиг EXIMa.

  10. Vlad:

    Продолжение статьи будет?

  11. Бaндитoчкa:

    Ну и после этого, как говорится, хотелось бы услышать начальника транспортного цеха ;)

Оставьте комментарий