Макс

Родной город: Омск

Фото галерея: смотреть

Контакты: написать

О себе:

Интересы:

- программирование

- интернет

- психология

- менеджмент

- автоматизация

Погляди
Голосование

Нравиться ли вам блог

  Да
  Нет
  Я тут случайно

 

ГлавнаяКарта сайтаПечать страницы

Установка и настройка почтового сервера для доменов PostFix и Dovecot c использованием Maildir, SASL и PAM (пользователи системы) (CentOS,RedHat)

Решил как то я настроить почтовый сервер для отправки на домены почты, основной задаче было - защищенная авторизация через SASL, использование файлового метода хранения почтовых сообщений(использование MySQL для малого количества адресов смысла не имело, да и не вижу смысла), использование идентификации пользователей/почтовых ящиков через PAM(paswd+shadow) службу линукс. Делае все через консоль или SSH под root.

Установка Dovecot и Postfix

Остановим базовый MTA sendmail:

#service sendmail stop

Удалим базовый MTA sendmail: 

#yum remove sendmail

Проинструктируем все необходимые компоненты:

#yum install postfix dovecot system-switch-mail openssl openssl-devel mod_ssl cyrus* 

Запустим  system-switch-mail для назначения  MTA по умолчанию в системе, выберем Postfix.

Начнем настройку с Postfix, файлы конфигурации находиться по данному пути /etc/postfix master.cf и main.cf.

main.cf - файл настройки MTA

master.cf -  файл настройки транспортных путей, в моей конфигурации его изменение не понадобиться.

Добавление в автозагрузку и запуск сервисов:

#chkconfig postfix on

#chkconfig dovecot on 

#service postfix start

#service dovecot start

Я постарался все прокомментировать в файле конфигурации, напомню что Postfix очень впечатлителен к пробелам.

Данные параметры берутся в  файле /etc/host  mydomain - домен,   myhostname  - локальная альтернатива, они не должны бить одинаковы

myhostname = mail.example.ru
mydomain = example.ru

-------------    Начало main.cf     ------------- 

# Имя, домен и псевдонимы почтового узла
myhostname = mail.example.ru
mydomain = example.ru
myorigin = $mydomain

# Список сетей, которым разрешен relay; слушаем на всех интерфейсах, добавьте свой внешний  IP адрес
mynetworks = 127.0.0.0/8
#, 0.0.0.0/0
inet_interfaces = all

# Баннер, выдаваемый при подключении
smtpd_banner = $myhostname SMTP $mail_name
biff = no

# Снимаем комментарий, если хотим снять ограничение на размер ящика (по умолчанию 51200000 байт)
# mailbox_size_limit = 0
recipient_delimiter = +

# Формат почтового ящика, возможен вариант Mailbox
home_mailbox = Maildir/

# Каталоги для хранения почты и очереди Postfix
mail_spool_directory = /var/mail
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix

# Генерация сообщения о задержке почты
delay_warning_time = 4h

# Список доменов, через которые будет осуществляться локальная доставка
mydestination = localhost.$mydomain, localhost, $mydomain, 87.118.94.186
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

# Настройки логов
debug_peer_level = 2
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
xxgdb $daemon_directory/$process_name $process_id & sleep 5

# Отключение сообщений
unknown_local_recipient_reject_code = 550
# Отправлять Sendmail от
setgid_group = postdrop
mail_owner = postfix

# TLS-настройки
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
# позволяет производить SMTP авторизацию только в режиме TLS.
#smtpd_tls_auth_only = yes
smtpd_tls_cert_file=/etc/pki/tls/certs/smtpd.pem
smtpd_tls_key_file=/etc/pki/tls/private/smtpd.pem
smtpd_tls_CAfile =/etc/pki/tls/certs/smtpd.pem

smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache

# Настройки SASL
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_local_domain = $myhostname
#broken_sasl_auth_clients = yes

# путь указывается относительно queue_directory
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous

relay_domains= $mydestination

# Используем тип dovecot
smtpd_sasl_type = dovecot

# Прописываем правила проверки сообщений
# ограничения, проверяемые на этапе RCPT TO:
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks,
# запрещаем выдачу писем в поток, как это делают
# нетерпеливые спаммеры
reject_unauth_pipelining,
# см комментарий к разделу smtpd_sender_restrictions
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
# запрещаем прием и передачу писем, не относящихся к нам
# без этой строчки сервер становится open-relay
reject_unauth_destination,
# если все вышеперечисленное подошло, идем дальше
permit

# запрещаем проверку отправителем существование адреса получателя
# на этапе передачи заголовка
disable_vrfy_command = yes
smtpd_helo_required = yes

# Прописываем алиасы - правила изменения адреса для виртуальных пользователей
virtual_alias_maps = hash:/etc/postfix/virtual
# Прописываем виртуальные домены, которые разрешены
virtual_alias_domains = /etc/postfix/vdomain

 -------------    Конец main.cf     -------------  

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

  -------------    Начало vdomain -------------    

domain1.ru domain2.ru 

  -------------    Конец   vdomain -------------

   -------------    Начало virtual -------------     

admin@domain1.ru  domain1_ru 
admin@domain2.ru   domain2_ru 

  -------------    Конец   virtual -------------

admin@domain1.ru  - внешний почтовый адрес пользователя на виртуальном домене  domain1.ru

domain1_ru - внутренний почтовый адрес локального пользователя/имя пользователя  в системе

Как создадите/обновите файлы запустим команду для преобразования файла в индексную базу, данную команду запускаем только для virtual, должен появиться файл  virtual.db.Данную команду нужно выполнять каждый раз как измените virtual.

#postmap /etc/postfix/virtual

После настройки проверьте на ошибки и перегрузите сервис:

#service postfix check 

#service postfix restart

Настройка Dovecot

Файл конфигурации находится по данному пути /etc/dovecot.conf

 -------------    Начало  dovecot.conf     -------------   

# Каталог для хранения временных файлов
base_dir = /var/run/dovecot/

# Протоколы, которые будем использовать; я включил все, но лишние можно убрать;
# если dovecot используется для аутентификации, а не для доставки почты, выставляем none
protocols = pop3 pop3s imap imaps

# Отключение команды LOGIN, соединения принимаются только через SSL/TLS
#disable_plaintext_auth = yes

# Перед выключением Dovecot master process останавливаем все IMAP- и POP3-процессы
#shutdown_clients = yes

# Время в журнале в формате strftime(3)
log_timestamp = "%Y-%m-%d %H:%M:%S "
login_log_format_elements = user=<%u> method=%m rip=%r lip=%l %c
syslog_facility = mail
log_path = /var/log/dovecot.log
mail_debug = no
auth_verbose = no
auth_debug = no
auth_debug_passwords = no

# IP-адрес, с которого будут приниматься SSL-соединения (по умолчанию все)
#ssl_listen =

# Отключение поддержки SSL/TLS
#ssl_disable = no

# Ключи и сертификаты
#ssl_cert_file = /etc/pki/dovecot/certs/dovecot.pem
#ssl_key_file = /etc/pki/dovecot/private/dovecot.pem
ssl_cert_file=/etc/pki/tls/certs/smtpd.pem
ssl_key_file=/etc/pki/tls/private/smtpd.pem
#ssl_cipher_list = ALL:!LOW:!SSLv2

# Пароль для доступа к файлу ключей и файл с сертификатом CA SSL (если требуются)
#ssl_key_password =
#ssl_ca_file =/etc/pki/tls/root.crt

# Учетная запись, используемая при регистрации
login_user = dovecot

# Группы, позволяющие получить доступ к каталогам почтовых ящиков
#mail_privileged_group = vmail

# Расположение почтовых ящиков пользователей
mail_location = maildir:~/Maildir

# Полный доступ в пределах почтового ящика
mail_full_filesystem_access = no

# Маска для вновь создаваемых файлов
umask = 0077

pop3_uidl_format = %08Xu%08Xv

protocol imap {
}

protocol pop3 {
}

# Механизмы аутентификации
auth default {

# возможны варианты: plain login digest-md5 cram-md5 ntlm rpa apop anonymous gssapi
mechanisms = plain login
# эта строка специфическая для взаимодействия с Postfix
socket listen {
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}
# механизм проверки пароля мы используем системный
passdb pam {
}
# механизм проверки существования пользователя, через файл /etc/paswd
userdb passwd {
}
}

 -------------    Конец  dovecot.conf     -------------   

#service dovecot restart 

Настройка PAM и SASL и генерация сертификатов

Измените файлы как описано ниже:

В файлах /etc/pam.d/pop,  /etc/pam.d/pop3,  /etc/pam.d/imap,  /etc/pam.d/smtp(согут быть ссылочными) должно быть прописано: 

  -------------    Начало  -------------    

#%PAM-1.0
auth include system-auth
account include system-auth

  -------------    Конец   -------------  

Изменим настройки smtpd,  файлы находятся в двух папках /usr/lib/sasl2  и  /usr/lib/sasl2, проверьте чтобы в них были эти строчки:

  -------------    Начало  -------------    

pwcheck_method: saslauthd
mech_list: plain login md5 

  -------------    Конец   -------------  

Изменим настройки saslauthd, они находятся тут /etc/sysconfig/saslauthd 

  -------------    Начало  -------------     

SOCKETDIR=/var/run/saslauthd
MECH=pam
FLAGS="-n 2"

  -------------    Конец   -------------  

перезагрузим службу SASL

#service  saslauthd restart 

Проверим логирование в службе syslog, найдем файл /etc/syslog.conf в нем найдем/добавим/изменим поле mail.*     -/var/log/maillog

перезагрузим службу syslog

#service  syslog restart 

Генерация ключей

Генерация SSL ключей для для сервера

#openssl req -new -nodes -x509 -out smtpd.pem -keyout smtpd.pem -days 3650

Ключи положим  тут:

/etc/pki/tls/certs/smtpd.pem
/etc/pki/tls/private/smtpd.pem

Папки куда будет складываться почта

/home/domen1_ru/ - это хоум папка пользователя  domen1_ru

#mkdir /home/domen1_ru/Maildir

domen_1: domen_1  - пользователь  domen_1 и его группа  domen_1
#chown domen_1: domen_1 /home/john/Maildir

назначим права
#chmod -R 700 /home/ domen_1/Maildir

Вот и  все, я сомневаюсь конечно, что у Вас все получиться с первого раза, будут обязательно ошибки, о том как их решать Вы можете узнать в другой статье.

ОТ АВТОРА,т.е. меня:

Так же откройте права в файерволе IPTABLES, я так же описал какие порты нужно открыть.

PS: В личку писать о помоще по данной статье не надо - всем помочь не смогу, читаем и курим официальную документацию, привел ниже что можно почитать

Официальная документация по Postfix

http://www.postfix.org/documentation.html

Официальная документация по Dovecot 

http://wiki1.dovecot.org/

Интересный сайт с примером и описание, он мне очень помог  (не CentOS)

http://www.volmed.org.ru/wiki/index.php/Борьба_со_спамом,_средствами_самого_Postfix

А так же еще один приятный поэтапное описание (не CentOS)

http://www.mianet.ru/index.php/sysadmin/linux/2010-06-22-13-18-33/132--postfix-