Главная

Настройка собственного почтового сервера на основе CentOS 5.2

Используемые пакеты:
dovecot-1.0.7-2.el5
postfix-2.3.3-2
cyrus-sasl-2.1.22-4
cyrus-sasl-lib-2.1.22-4
cyrus-sasl-plain-2.1.22-4

Итак: создаём ключи для dovecot:
создаём каталог в удобном для нас месте, например /opt/CA. В нем создаём файл openssl.cnf с таким содержанием:
dir = /opt/CA
[ ca ]
default_ca    = CA_default
[ CA_default ]
serial         = $dir/serial
database       = $dir/index.txt
new_certs_dir  = $dir/newcerts
certificate    = $dir/rootCA.crt
private_key    = $dir/private/rootCA.key
default_days   = 365
default_md     = md5
preserve       = no
email_in_dn    = no
nameopt        = default_ca
certopt        = default_ca
policy         = policy_match

[ policy_match ]
countryName              = match
stateOrProvinceName      = match
organizationName         = match
organizationalUnitName   = optional
commonName               = supplied
emailAddress             = optional

#Заполняем своими данными
[req]
default_bits = 4096
default_md = md5
string_mask = nombstr
distinguished_name = req_distinguished_name
req_extensions    = v3_req
[ req_distinguished_name ]
0.organizationName       = zavod
organizationalUnitName   = zeh
emailAddress             = zeh@mail.ru
emailAddress_max         = 40
localityName             = Saratov
stateOrProvinceName      = Saratovskaja obl
countryName              = Russia
countryName_min          = 2
countryName_max          = 2
commonName               = kontora.ru
commonName_max           = 64

#Значения по умолчанию
0.organizationName_default    = n/a
localityName_default          = Saratov
stateOrProvinceName_default   = Russia
countryName_default           = RU

[ v3_ca ]
basicConstraints         = CA:TRUE
subjectKeyIdentifier     = hash
authorityKeyIdentifier   = keyid:always,issuer:always
[ v3_req ]
basicConstraints       = CA:FALSE
subjectKeyIdentifier   = hash
Создаём два каталога newcerts и private. Находясь в /opt/CA даём команды - echo '01' > serial и touch index.txt.
Создаём корневой сертификат командой -
openssl req -new -x509 -extensions v3_ca -keyout private/rootCA.key -out rootCA.crt -days 4000 -config ./openssl.cnf
Файл rootCA.key - закрытый секретный ключ
rootCA.crt корневой CA сертификат, который можно рассылать для почтовых клиентов.
Создадим сертификат для dovecot:
openssl req -new -nodes -out kontora.ru.csr -keyout kontora.ru.key -config ./openssl.cnf
файл kontora.ru.key - закрытый секретный ключ, нужен для SSL кодирования
файл kontora.ru.csr - запрос на подпись сертификата
Подпишем сертификат:
openssl ca -out kontora.ru.crt -config ./openssl.cnf -infiles kontora.ru.csr
Файл kontora.ru.crt - сертификат
Его копируем в /etc/pki/dovecot/cert/. А файл kontora.ru.key в /etc/pki/dovecot/private/
Далее редактируем /usr/lib/sasl2/smtpd.conf:
#/usr/lib/sasl2
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5

/etc/dovecot.conf:
protocols = imap imaps pop3 pop3s
disable_plaintext_auth = yes
ssl_disable = no
ssl_cert_file = /etc/pki/dovecot/certs/kontora.ru.crt
ssl_key_file = /etc/pki/dovecot/private/kontora.ru.key
login_chroot = yes
login_user = dovecot
mail_location = maildir:/var/spool/mail/%u:INBOX=/var/spool/mail/%u 
protocol imap {
}
protocol pop3 {
}
protocol lda {
}
auth default {
  mechanisms = plain login
  passdb pam {
  }
  userdb passwd {
  }
  user = root
  socket listen {
    client {
      path = /var/spool/postfix/private/auth
      mode = 0660
      user = postfix
      group = postfix
    }
  }
}
dict {
}
plugin {
}

/etc/postfix/main.cf:
mailbox_size_limit = 240000000
message_size_limit = 128000000
disable_vrfy_command = yes
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
mail_owner = postfix
myhostname = kontora.ru
mydomain = kontora.ru
myorigin = $myhostname
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost
unknown_local_recipient_reject_code = 550
mynetworks = 127.0.0.0/8
relay_domains = $mydestination
relay_domains_reject_code = 554
relayhost = 
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mail_spool_directory = /var/spool/mail/
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
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.3.3/samples
readme_directory = /usr/share/doc/postfix-2.3.3/README_FILES
inet_protocols = all
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
smtpd_sasl_authenticated_header = yes
smtpd_sasl_path = smtpd
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_require_helo = yes

Обращаю внимание: при создании пользователя в каталоге /var/spool/mail/ появляется файл с одноимённым названием. Его надо удалить и на его месте создать каталог с таким же именем. Выставить права на этот каталог, например пользователь valera: хозяин - valera, группа - mail. Можно также запретить логиниться пользователю в системе, прописав в /etc/passwd :/sbin/nologin.

Также обязательны для нормальной работы почтового сервера правильные записи в DNS домена kontora.ru зоны A, PTR и MX!
Запускаем службы dovecot и postfix, контролируя процессы запуска /var/log/maillog. Затем, при нормальном запуске служб, можно настроить почтовый клиент. Имя сервера входящие и исходящие - kontora.ru. Процессы подключения также контролировать /var/log/maillog

После того как убедимся, что клиент может получать и отправлять почту, можно настроить веб-интерфейс.
Используем пакет squirrelmail-1.4.8-5.el5.
Настройка squirrelmail:
запустить /usr/share/squirrelmail/config/conf.pl
В меню выбрать "D" (Set pre-defined setting for specific IMAP servers), установить в качестве IMAP-сервера - dovecot
Затем выбрать "3" (Folder Defaults), установить "Default Folder Prefix" - INBOX
Выбрать "10" (Languages), установить "Default Language" - ru_RU и "Default Charset" - utf-8
И последнее: выбрать "2" (Server Settings), установить "Domain" - kontora.ru
"S" сохранить и "Q" выйти
Размер вложений в отправляемых письмах можно установить, отредактировав /etc/php.ini

post_max_size = xxM
upload_max_filesize = xxM
Где xx размер в мегабайтах. После редактирования необходимо перегрузить apache.
service httpd restart

Размещаем на нашем сайте kontora.ru ссылку /webmail и можно работать.
Данный сервер из разряда простых, рассчитанный на малое количество пользователей.


Назад . . .
Главная

Настройка собственного почтового сервера на основе CentOS 6.2

Собственно процедура похожа, за некоторыми мелочами: в CentOS 5.x использовался dovecot версии 1.х, а в CentOS 6.x dovecot версии 2.х.

/etc/dovecot/dovecot.conf:
auth_mechanisms = plain login
mail_location = maildir:/var/spool/mail/%u:INBOX=/var/spool/mail/%u
mail_access_groups = mail
passdb {
  driver = pam
}
protocols = imap pop3
service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0660
    user = postfix
  }
#  user = root
}
service imap-login {
  chroot = login
  user = dovecot
}
service pop3-login {
  chroot = login
  user = dovecot
}
ssl_cert = </etc/pki/dovecot/certs/kontora.ru.crt
ssl_key = </etc/pki/dovecot/private/kontora.ru.key
userdb {
  driver = passwd
}
protocol imap {
        mail_plugins = $mail_plugins autocreate
}

Ну и можно изменить немного файл конфигурации postfix, добавив немного защиты от спама. main.cf:

queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
mydomain = kontora.ru
myorigin = $mydomain
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
unknown_local_recipient_reject_code = 550
mynetworks = 192.168.0.0/24 127.0.0.0/8

relay_domains = $mydestination
relay_domains_reject_code = 554

mailbox_size_limit = 512000000
message_size_limit = 240000000

mail_owner = postfix
inet_interfaces = all

relayhost = 

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mail_spool_directory = /var/spool/mail/
debug_peer_level = 2
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = reject_non_fqdn_recipient,
                                reject_non_fqdn_sender,
                                reject_unknown_sender_domain,
                                reject_unknown_recipient_domain,
                                permit_mynetworks,reject_unauth_destination,
                                permit_sasl_authenticated,
                                reject_non_fqdn_hostname,
                                reject_invalid_hostname,
                                reject_rbl_client relays.ordb.org,
                                reject_rhsbl_sender dsn.rfc-ignorant.org,
                                reject_unverified_sender,
                                permit
smtpd_helo_restrictions = permit_mynetworks,
                                permit_sasl_authenticated,
                                reject_invalid_helo_hostname,
                                reject_non_fqdn_helo_hostname,
                                reject_unknown_helo_hostname,
                                permit

smtpd_sasl_authenticated_header = yes
smtpd_sasl_path = smtpd
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_require_helo = yes

disable_vrfy_command = yes
smtpd_data_restrictions = reject_unauth_pipelining,reject_multi_recipient_bounce
smtpd_etrn_restrictions = reject
smtpd_reject_unlisted_sender = yes
smtpd_reject_unlisted_recipient = yes
smtpd_helo_required = yes
strict_rfc821_envelopes = yes
smtpd_delay_reject = yes
smtpd_hard_error_limit = 1
smtpd_recipient_limit = 40

readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
sample_directory = /usr/share/doc/postfix-2.6.6/samples
data_directory = /var/lib/postfix
Главная