Настройка почтового сервера на базе Postfix

Каждый системный администратор Linux хотя бы раз за свою карьеру сталкивается с вопросом настройки почтового сервера. В этой статье хочу поделиться своим опытом настройки почтового сервера на основе postfix + dovecot + spamassassin + openldap под управлением Gentoo Linux.

Обозначим задачу — необходимо настроить почтовый сервер:

  1. Использующий для работы протоколы SMTP, IMAP (локально), IMAPS (Internet).
  2. Хранящий учетные данные в базе OpenLDAP.
  3. Поддерживающий алиасы учетных записей.
  4. Позволяющий объединять учетные записи в группы.
  5. Имеющий инструменты защиты от спама.

Для успешной работы почтового сервера для домена domain.com необходимо выполнение следующих условий:

  • DNS-зона domain.com должна содержать запись типа MX, ссылающаяся на IP адрес почтового сервера.
  • IP адресу почтового сервера в соответствующей обратной (reverse) зоне должно быть сопоставлено имя. Т.е. при выполнении команды nslookup ip.ad.dr.es, ответ должен содержать DNS-имя.

Для ясности определимся, что почтовому серверу соответствует имя mx.domain.com и в обратной зоне DNS прописано это же имя.

Настройка сервера состоит из следующих этапов:

  1. Установка программного обеспечения
  2. Настройка OpenLDAP
  3. Настройка Dovecot
  4. Настройка Spamassassin
  5. Настройка Postfix

Этап 1. Установка программного обеспечения.

Для работы почтового сервера необходимо установить следующие пакеты:

  • net-nds/openldap USE: berkdb crypt syslog
  • net-mail/dovecot USE: bzip2 ldap maildir managesieve pam sieve ssl zlib
  • mail-filter/spamassassin USE: berkdb
  • mail-filter/spampd
  • mail-mta/postfix USE: dovecot-sasl ldap pam ssl

Этап 2. Настройка OpenLDAP.

Конфигурационные файлы находятся в директории /etc/openldap, база данный и ее параметры в директории /var/lib/openldap-data. Версия openldap-2.4.24.

Для настройки openldap понадобится файл postfix.schema. Файл необходимо разархивировать и положить в директорию /etc/openldap/schema.

Далее приступаем к настройке OpenLDAP.

Файл slapd.conf

include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/postfix.schema

pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args

loglevel 256

#######################################################################
# Параметры базы данных LDAP
#######################################################################

database        bdb
suffix          "dc=server"
rootdn          "cn=admin,dc=server"
checkpoint      32  30

# Пароль генерируется командой: slappasswd -h {MD5}
rootpw          {MD5}xxxxxxxxxxxxxxxxxxxxx

directory       /var/lib/openldap-data

index   cn,uid,mail,uidNumber,accountActive,Vdomain,gidNumber,memberUid pres,eq
index   objectClass eq

##########################################################################
# Параметры доступа к базе данных LDAP
##########################################################################

access to dn.children="ou=mail,dc=server" attrs="userPassword"
        by dn="cn=admin,dc=server" write
        by self write
        by anonymous auth
        by * none

access to dn.children="ou=mail,dc=server"
        by dn="cn=admin,dc=server" write
        by self read
        by anonymous auth
        by * none

access to *
        by dn="cn=admin,dc=server" write
        by self read
        by anonymous auth
        by * none

Базу данных, которая создастся автоматически при запуске OpenLDAP, необходимо заполнить начальными данными. Для этого подготовим шаблон domain.com.ldif:

dn: dc=server
changetype: add
objectclass: dcObject
objectclass: organization
dc: server
o: server

dn: ou=mail,dc=server
changetype: add
objectclass: organizationalUnit
ou: mail

dn: VDomain=domain.com,ou=mail,dc=server
changetype: add
objectclass: VirtualDomain
accountActive: TRUE
editAccounts: TRUE
editPostmasters: FALSE
VDomain: domain.com

После сохранения файла необходимо запустить сервер openldap:

/etc/init.d/slapd start

Затем использовать шаблон для создания базы данных (при запросе пароля следует указать тот же пароль, что использовали в файле slapd.conf):

ldapadd -xWD cn=admin,dc=server -h localhost -f domain.com.ldif

Сервер OpenLDAP настроен и запущен. Переходим к настройке Dovecod.

css.php