from: http://nixman.info/?p=2290
В свете последних разоблачений о том, что АНБ читает нашу почту (кто б сомневался), у публичных email-сервисов стало еще одним плюсом меньше.
Ну а раз плюсов стало меньше, то мыслей стало больше. Например о том, что неплохо было бы иметь свой собственный, валидный на все сто почтовый сервер с доступом из любой точки мира, поддержкой шифрования — чтобы, значит, все как у взрослых.
На первый взгляд все просто — ставимsendmail Postfix, прикручиваем к нему dovecot в качестве MDA — и дело в шляпе! Или нет?
Как оказалось, почти все руководства написаны в эпоху dovecot 1.x. В wheezy же предлагается уже dovecot2. Формат конфиг-файла при этом у них значительно отличается — до полной невозможности использования.
В свете последних разоблачений о том, что АНБ читает нашу почту (кто б сомневался), у публичных email-сервисов стало еще одним плюсом меньше.
Ну а раз плюсов стало меньше, то мыслей стало больше. Например о том, что неплохо было бы иметь свой собственный, валидный на все сто почтовый сервер с доступом из любой точки мира, поддержкой шифрования — чтобы, значит, все как у взрослых.
На первый взгляд все просто — ставим
Как оказалось, почти все руководства написаны в эпоху dovecot 1.x. В wheezy же предлагается уже dovecot2. Формат конфиг-файла при этом у них значительно отличается — до полной невозможности использования.
Ну а раз информация не находится в гугле за пять минут — надо написать howto, чтобы не тратить время в следующий раз.
Процесс установки описывать не буду. Нам понадобятся postfix, postfix admin и dovecot(будем считать, что в качестве СУБД у нас MySQL, и все нужное для LAMP уже стоит):
Процесс установки описывать не буду. Нам понадобятся postfix, postfix admin и dovecot(будем считать, что в качестве СУБД у нас MySQL, и все нужное для LAMP уже стоит):
1
|
# sudo apt-get install postfix postfix-mysql libsasl2-modules libsasl2-modules-sql postfixadmin php5-fpm php5-imap php5-mysql php5-mcrypt php5-intl ssl-cert mysqmail-dovecot-logger dovecot-sieve dovecot-mysql dovecot-managesieved dovecot-lmtpd dovecot-imapd dovecot-common dovecot-antispam
|
.
Первым делом настраиваем postfix. Открываем в любимом редакторе /etc/postfix/main.cf:
/etc/postfix/main.cf
/etc/postfix/main.cf
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
myhostname = mail.nixman.info
mydomain = nixman.info myorigin = /etc/mailname inet_interfaces = all inet_protocols = ipv4 mynetworks_style = host smtpd_banner = $myhostname ESMTP $mail_name biff = no append_dot_mydomain = no delay_warning_time = 4h readme_directory = no alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases mydestination = $myhostname localhost.$mydomain, localhost localhost.localdomain relayhost = mynetworks = 127.0.0.0/8 mailbox_size_limit = 0 recipient_delimiter = + #local_transport = virtual #local_recipient_maps = $virtual_mailbox_maps strict_rfc821_envelopes = yes disable_vrfy_command = yes queue_directory = /var/spool/postfix smtpd_soft_error_limit = 10 smtpd_hard_error_limit = 15 smtpd_error_sleep_time = 20 anvil_rate_time_unit = 60s smtpd_client_connection_count_limit = 20 smtpd_client_connection_rate_limit = 30 smtpd_client_message_rate_limit = 30 smtpd_client_event_limit_exceptions = 127.0.0.0/8 smtpd_client_connection_limit_exceptions = 127.0.0.0/8 maximal_queue_lifetime = 1d bounce_queue_lifetime = 1d queue_run_delay = 300s minimal_backoff_time = 300s |
Секция настройки почтовых ящиков.
Настройки берем из БД postfixadmin, с помощью которого будем создавать/удалять/менять ящики, почтовые домены и алиасы.
Настройки берем из БД postfixadmin, с помощью которого будем создавать/удалять/менять ящики, почтовые домены и алиасы.
1
2 3 4 5 6 7 8 9 10 11 12 13 |
# ---------------------- VIRTUAL DOMAINS START ----------------------
virtual_alias_maps = mysql:/etc/postfix/virtual-alias-maps.cf virtual_mailbox_domains = mysql:/etc/postfix/virtual-mailbox-domains.cf virtual_mailbox_maps = mysql:/etc/postfix/virtual-mailbox-maps.cf virtual_mailbox_limit = 104857600 virtual_mailbox_base = /var/vmail virtual_uid_maps = static:5000 virtual_gid_maps = static:5000 mailbox_size_limit = 0 message_size_limit = 52428800 virtual_transport = dovecot dovecot_destination_recipient_limit = 1 # ----------------------- VIRTUAL DOMAINS END ----------------------- |
настройки SASL аутентификации
1
2 3 4 5 6 7 8 9 10 11 12 13 14 |
# ------------------------- SASL PART START -------------------------
broken_sasl_auth_clients = yes smtpd_helo_required = yes smtpd_delay_reject = yes smtpd_tls_ciphers = high smtpd_client_restrictions = permit_sasl_authenticated smtpd_sender_restrictions = permit_sasl_authenticated smtpd_sasl_auth_enable = yes smtpd_sasl_authenticated_header = yes smtpd_sasl_security_options = noanonymous smtpd_sasl_tls_security_options = $smtpd_sasl_security_options smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth-client # -------------------------- SASL PART END -------------------------- |
Настройки TLS
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# -------------------------- TLS PART START -------------------------
smtp_use_tls = yes smtpd_use_tls = yes smtpd_tls_auth_only = yes smtpd_tls_CAfile = /etc/ssl/certs/rootCA.crt smtpd_tls_cert_file = /etc/ssl/certs/postfix.crt smtpd_tls_key_file = /etc/ssl/private/postfix.key smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3 smtpd_tls_received_header = yes smtpd_tls_loglevel = 1 smtpd_tls_security_level = may tls_random_source = dev:/dev/urandom smtpd_tls_exclude_ciphers = aNULL, DES, 3DES, MD5, DES+MD5, RC4 smtpd_tls_protocols = TLSv1, SSLv3, SSLv2 smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache smtpd_tls_session_cache_timeout = 3600s # --------------------------- TLS PART END -------------------------- |
Настройки отправки почты (разрешения и ограничения)
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# ------------------ SMTPD RESTRICTIONS PART START ------------------
disable_vrfy_command = yes non_fqdn_reject_code = 450 invalid_hostname_reject_code = 450 maps_rbl_reject_code = 450 unverified_sender_reject_code = 550 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_invalid_hostname, reject_invalid_helo_hostname, warn_if_reject reject_non_fqdn_helo_hostname, warn_if_reject reject_unknown_helo_hostname, warn_if_reject reject_unknown_client, reject_unauth_pipelining, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unknown_sender_domain, reject_unknown_recipient_domain, permit smtpd_sender_restrictions = reject_unknown_sender_domain, check_sender_mx_access pcre:/etc/postfix/regex_blacklist, check_sender_access pcre:/etc/postfix/regex_blacklist, check_sender_ns_access pcre:/etc/postfix/regex_blacklist, permit smtpd_data_restrictions = permit_mynetworks, reject_unauth_pipelining, reject_multi_recipient_bounce, permit # ------------------- SMTPD RESTRICTIONS PART END -------------------- |
Теперь создаем конфиг-файлы, которые расскажут postfix-у, из какой базы и как именно брать конфигурацию наших пользователей.
/etc/postfix/virtual-alias-maps.cf
/etc/postfix/virtual-alias-maps.cf
1
2 3 4 5 6 |
# Такие же настройки нужно будет позже указать для postfixadmin
user = postfixadmin password = postfixpass hosts = 127.0.0.1 dbname = postfixadmin query = select `goto` from `alias` where `address` = '%s' |
/etc/postfix/virtual-mailbox-domains.cf
1
2 3 4 5 6 |
# Такие же настройки нужно будет позже указать для postfixadmin
user = postfixadmin password = postfixpass hosts = 127.0.0.1 dbname = postfixadmin query = select `domain` from `domain` where `domain` = '%s' |
/etc/postfix/virtual-mailbox-maps.cf
1
2 3 4 5 6 |
# Такие же настройки нужно будет позже указать для postfixadmin
user = postfixadmin password = postfixpass hosts = 127.0.0.1 dbname = postfixadmin query = select `maildir` from `mailbox` where `username` = '%s' |
Теперь открываем master.cf и делаем примерно так:
/etc/postfix/master.cf
/etc/postfix/master.cf
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
smtpd pass - - n - - smtpd
smtp inet n - n - - smtpd smtps inet n - - - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING 587 inet n - - - - smtpd tlsproxy unix - - n - 0 tlsproxy dnsblog unix - - n - 0 dnsblog pickup fifo n - - 60 1 pickup cleanup unix n - - - 0 cleanup qmgr fifo n - n 300 1 qmgr tlsmgr unix - - - 1000? 1 tlsmgr rewrite unix - - - - - trivial-rewrite bounce unix - - - - 0 bounce defer unix - - - - 0 bounce trace unix - - - - 0 bounce verify unix - - - - 1 verify flush unix n - - 1000? 0 flush proxymap unix - - n - - proxymap proxywrite unix - - n - 1 proxymap smtp unix - - - - - smtp relay unix - - - - - smtp showq unix n - - - - showq error unix - - - - - error retry unix - - - - - error discard unix - - - - - discard local unix - n n - - local virtual unix - n n - - virtual lmtp unix - - - - - lmtp anvil unix - - - - 1 anvil scache unix - - - - 1 scache dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient} |
Создаем пользователя, от чьего имени будет рулиться почта:
1
2 |
# sudo groupadd -g 5000 vmail
# sudo useradd -g vmail -u 5000 vmail -d /dev/null -s /bin/false -M |
Добавляем юзера postfix в группу sasl
1
|
adduser postfix sasl
|
Создаем две пары сертификатов, в процессе отвечаем на несколько простых вопросов:
1
2 |
# openssl req -new -x509 -days 3650 -nodes -out /etc/ssl/certs/dovecot.pem -keyout /etc/ssl/private/dovecot.pem
# chmod o= /etc/ssl/private/dovecot.pem |
1
2 |
# openssl req -new -x509 -days 3650 -nodes -out /etc/ssl/certs/postfix.pem -keyout /etc/ssl/private/postfix.pem
# chmod o= /etc/ssl/private/postfix.pem |
Готовим папку для ящиков:
1
2 |
# sudo mkdir /var/vmail
# sudo chown vmail:vmail /var/vmail |
Теперь настраиваем dovecot. Как я уже сказал, идеология его настройки изменилась — теперь конфиг-файл разбит на несколько частей.
Для начала, сохраняем всю конфигурацию по умолчанию в какое-нибудь надежное место — на всякий случай.
Для начала, сохраняем всю конфигурацию по умолчанию в какое-нибудь надежное место — на всякий случай.
Настройки работы с БД, в которой будут храниться учетки пользователей:
/etc/dovecot/dovecot-sql.conf
/etc/dovecot/dovecot-sql.conf
1
2 3 4 5 6 7 |
driver = mysql
connect = host=127.0.0.1 dbname=postfixadmin user=postfixadmin password=postfixpass default_pass_scheme = CRAM-MD5 password_query = SELECT username as user, password FROM mailbox WHERE username = '%u' #Еще один хинт, без которого ничего не взлетит. Почему-то неправильно определяется home #И из-за этого не создавалась папка пользователя. user_query = SELECT concat('/var/vmail/',`maildir`) AS `home`, 5000 as uid, 5000 as gid FROM mailbox WHERE username = '%u' |
/etc/dovecot/dovecot.conf
1
2 3 4 5 6 7 8 9 10 11 12 13 14 |
#С pop3 работать не будем
protocols = imap listen = * instance_name = dovecot # Greeting message for clients. login_greeting = Dovecot ready. # Завершать все дочерние процессы, если завершен мастер-процесс shutdown_clients = yes default_internal_user = vmail !include conf.d/*.conf |
Настройки аутентификации
/etc/dovecot/conf.d/10-auth.conf
/etc/dovecot/conf.d/10-auth.conf
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
!include auth-sql.conf.ext
# Владелец почтовых папок (vmail) mail_uid = 5000 mail_gid = 5000 # uid/gid нашего пользователя vmail first_valid_uid = 5000 last_valid_uid = 5000 disable_plaintext_auth = no service auth { user = root unix_listener auth-userdb { mode = 0666 user = $default_internal_user group = $default_internal_user } # Postfix smtp-auth unix_listener /var/spool/postfix/private/auth-client { mode = 0666 user = postfix group = postfix } } service auth-worker { user = $default_internal_user } |
Небольшой конфиг. где мы указываем, где и как хранить пароли пользователей.
/etc/dovecot/conf.d/auth-sql.conf.ext
/etc/dovecot/conf.d/auth-sql.conf.ext
1
2 3 4 5 6 7 8 9 10 11 12 13 14 |
auth_mechanisms = plain login cram-md5
# Аутентификация пользователей запросом к базе. passdb { driver = sql args = /etc/dovecot/dovecot-sql.conf } # запрос параметров почтовых пользователей из базы # актуально если необходимы персональные настройки userdb { driver = sql args = /etc/dovecot/dovecot-sql.conf } |
Настройки логирования
/etc/dovecot/conf.d/10-logging.conf
/etc/dovecot/conf.d/10-logging.conf
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
##
## Log destination. ## log_path = syslog syslog_facility = mail ## ## Logging verbosity and debugging. ## auth_verbose = no #auth_verbose_passwords = yes auth_debug = no auth_debug_passwords = no mail_debug = no verbose_ssl = no ## ## Log formatting. ## log_timestamp = "%Y-%m-%d %H:%M:%S " # Format to use for logging mail deliveries. You can use variables: # %$ - Delivery status message (e.g. "saved to INBOX") # %m - Message-ID # %s - Subject # %f - From address # %p - Physical size # %w - Virtual size deliver_log_format = msgid=%m: %$ |
Настройки почтовых ящиков
/etc/dovecot/conf.d/10-mail.conf
/etc/dovecot/conf.d/10-mail.conf
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
##
## Mailbox locations and namespaces ## #mail_location = maildir:~/Maildir # Расположение и формат файлов почты (%d - домен, %n - имя пользователя). # Обязательно проверьте права на папку - они должны совпадать # с тем, что указано ниже mail_location = maildir:/var/vmail/%d/%n mail_privileged_group = vmail mail_access_groups = vmail mmap_disable = yes namespace inbox { inbox = yes mailbox Drafts { special_use = \Drafts } mailbox Spam { special_use = \Junk } mailbox Trash { special_use = \Trash } mailbox Sent { special_use = \Sent } } |
Шифрование
/etc/dovecot/conf.d/10-ssl.conf
/etc/dovecot/conf.d/10-ssl.conf
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
SSL/TLS support: yes, no,
ssl = yes # файлы сертификатов в кодировке pem ssl_cert = </etc/ssl/certs/postfix.crt ssl_key = </etc/ssl/private/postfix.key ## ## SSL settings ## # SSL protocols to use ssl_protocols = !SSLv2 # SSL ciphers to use ssl_cipher_list = ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA:AES128-GCM-SHA256:AES128-SHA:HIGH:!ADH:!EXP:!LOW:!RC2:!3DES:!SEED:!MD5:!aNULL:!EDH:!CAMELLIA:!MEDIUM:!RC4:!eNULL; # SSL crypto device to use, for valid values run "openssl engine" ssl_crypto_device = rsax |
Настройки Local Delivery Agent. Потребуется для LMTP (см. ниже)
/etc/dovecot/conf.d/15-lda.conf
/etc/dovecot/conf.d/15-lda.conf
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
##
## LDA specific settings (also used by LMTP) ## postmaster_address = postmaster@nixman.info hostname = mail.nixman.info rejection_subject = Rejected: %s rejection_reason = Message <%t> was rejected:%n%r lda_mailbox_autocreate = yes lda_mailbox_autosubscribe = yes protocol lda { log_path = syslog mail_plugins = $mail_plugins sieve mail_fsync = optimized } |
Настройки IMAP
/etc/dovecot/conf.d/20-imap.conf
/etc/dovecot/conf.d/20-imap.conf
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#
## IMAP specific settings ## protocol imap { mail_max_userip_connections = 512 imap_idle_notify_interval = 24 mins mail_plugins = $mail_plugins } service imap-login { # enabled if you want non-ssl imap #inet_listener imap { # port = 143 #} inet_listener imaps { port = 993 ssl = yes } } service imap { # process_limit = 64 } |
Настройки локальной доставки почты (потребуется для корректной работы антиспама)
/etc/dovecot/conf.d/20-lmtp.conf
/etc/dovecot/conf.d/20-lmtp.conf
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
##
## LMTP specific settings ## protocols = $protocols lmtp protocol lmtp { #auth_socket_path = director-userdb mail_fsync = optimized mail_plugins = $mail_plugins sieve } service lmtp { user = vmail unix_listener lmtp { mode = 0666 } inet_listener lmtp { address = 127.0.0.1 port = 24 } } |
Правила управления почтой (перемещение, обработка). Нужно для антиспама.
/etc/dovecot/conf.d/20-managesieve.conf
/etc/dovecot/conf.d/20-managesieve.conf
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
##
## ManageSieve specific settings ## # Service configuration protocols = $protocols sieve protocol sieve { #managesieve_max_line_length = 65536 } # Service definitions service managesieve-login { inet_listener sieve { port = 4190 } inet_listener sieve_deprecated { port = 2000 } } service managesieve { # process_count = 32 } plugin { # The path to the user's main active script. If ManageSieve is used, this the # location of the symbolic link controlled by ManageSieve. sieve = ~/.dovecot.sieve sieve_default = /etc/dovecot/sieve/sieve.default sieve_dir = ~/sieve sieve_global_dir = /etc/dovecot/sieve sieve_before = /etc/dovecot/sieve/sieve.before sieve_max_actions = 1024 } |
Перезагружаем сервисы, смотрим логи:
1
2 |
# sudo service postfix restart
# sudo service dovecot restart |
Логи, в которых можно найти кучу всего интересного:
1
2 3 4 5 |
/var/log/mail.info
/var/log/mail.warn /var/log/mail.err /var/log/mail.log /var/log/dovecot.log |
Если все в порядке, дебаг можно отключить.
1
|
# sudo sed -i 's/\(.*_debug.* = \).*/\1no/' /etc/dovecot/dovecot.conf # sed -i 's/\(auth_verbose = \).*/\1no/' /etc/dovecot/dovecot.conf
|
На этом первая часть настройки закончена. Теперь настраим веб-интерфейс для доступа к ящику и управления сервером.
Итак, почту настроили. Теперь же нужно ей управлять. И, желательно, управлять из web-интерфейса. Потому что консоль — это, конечно, труЪ, но нам же нужно удобно и просто, правда?
Для этого пользуем postfixadmin:
# sudo apt-get install postfixadmin
Далее переходим к установке:
http://example.com/postfixadmin/setup.php
В ней нет ничего сложного, основные параметры (доступ к БД) нас спросили еще раньше, при установке пакета. А может, БД у вас уже готова (мы указывали настройки доступа к БД, когда настраивали postfix, помните?).
После ввода пароля должна появится строка с хешем, копируем её, открываем файл config.inc.php находим там эту строку и вставляем хеш:
После ввода пароля должна появится строка с хешем, копируем её, открываем файл config.inc.php находим там эту строку и вставляем хеш:
# /etc/postfixadmin/config.inc.php
...
$CONF['setup_password'] = ' ';
В этом же файлике проверяем настройки БД:
# /etc/postfixadmin/config.inc.php
$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = '123';
$CONF['database_name'] = 'postfixadmin';
$CONF['database_prefix'] = '';
$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = '123';
$CONF['database_name'] = 'postfixadmin';
$CONF['database_prefix'] = '';
изменяем алгоритм шифрования:
# /etc/postfixadmin/config.inc.php
$CONF['encrypt'] = 'dovecot:CRAM-MD5';
$CONF['encrypt'] = 'dovecot:CRAM-MD5';
Он должен совпадать с методом, указанным в настройках dovecot!
Так же меняем пусть до генератора паролей dovecot (он сменился в dovecot2)
# /etc/postfixadmin/config.inc.php
$CONF['dovecotpw'] = "/usr/bin/doveadm pw";
$CONF['dovecotpw'] = "/usr/bin/doveadm pw";
И настраиваем формат ящиков с почтой (так же как мы выше указывали в настройках dovecot.
# /etc/postfixadmin/config.inc.php
# Формат ящика будет такой: /var/vmail/example.com/username
$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';
# Формат ящика будет такой: /var/vmail/example.com/username
$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';
Теперь можно заходить в админку и настраивать почтовые домены, пользователей и т.д.
Там же, в конфиг-файле можно изменить еще много полезных параметров — не поленитесь его изучить.
Там же, в конфиг-файле можно изменить еще много полезных параметров — не поленитесь его изучить.
Теперь переходим к веб-интерфейсу собственно для почты. Я остановился практически на первом попавшемся — roundcubemail.
Скачиваем тарболл, добавляем новый virtualhost в apache:
Скачиваем тарболл, добавляем новый virtualhost в apache:
<VirtualHost *:80>
ServerAdmin webmaster@example.com
ServerName mail.example.com
DocumentRoot /var/www/vhosts/mail.example.com
<Directory /var/www/vhosts/mail.example.com/>
Options Indexes FollowSymLinks MultiViews Allow
Override All Order allow,deny allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
ServerAdmin webmaster@example.com
ServerName mail.example.com
DocumentRoot /var/www/vhosts/mail.example.com
<Directory /var/www/vhosts/mail.example.com/>
Options Indexes FollowSymLinks MultiViews Allow
Override All Order allow,deny allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Включаем сайт, перегружаем apache:
#sudo a2ensite mail.example.info
#sudo service apache2 restart
#sudo service apache2 restart
Далее заходим на наш сайт, установка тоже довольно простая. Нужно будет создать еще одну базу и ответить на несколько вопросов. Если что-то введете не так — можно будет потом поправить в конфиге.
В конце установщик предложит нам сохранить конфигурационные файлы, чтобы залить их на сервер. Ну или можно скопировать их содержимое прямо из веб-интерфейса и скопировать в файл на сервере — кому как удобней.
В конце установщик предложит нам сохранить конфигурационные файлы, чтобы залить их на сервер. Ну или можно скопировать их содержимое прямо из веб-интерфейса и скопировать в файл на сервере — кому как удобней.
Например, у меня получилось нечто такое (естественно, показываю не все, а только самую мякотку)
# /var/www/vhosts/mail.example.com/config/main.inc.php
# Настройки логирования. Может пригодиться при отладке. После того, как все настроите, лучше отключить
$rcmail_config['log_driver'] = 'file';
$rcmail_config['smtp_log'] = false;
$rcmail_config['log_logins'] = false;
$rcmail_config['log_session'] = false;
$rcmail_config['sql_debug'] = false;
$rcmail_config['imap_debug'] = false;
$rcmail_config['ldap_debug'] = false;
$rcmail_config['smtp_debug'] = true;
# Т.к. IMAP у нас с шифрованием, то порт будет не 143, как по дефолту, и явно указываем SSL
$rcmail_config['default_host'] = 'ssl://localhost';
$rcmail_config['default_port'] = 993;
# SMTP у нас тоже не простой, а с шифрованием. Так что тоже уточняем использование TLS
$rcmail_config['smtp_server'] = 'tls://%n';
# Эту строку генерирует установщик, но можно и самому. Здесь должно быть ровно 24 символа
$rcmail_config['des_key'] = 'QzzTNlFdFnMbGgWbzABF2811';
# Для паролей в не-английской раскладке
$rcmail_config['password_charset'] = 'UTF-8';
# Настройки логирования. Может пригодиться при отладке. После того, как все настроите, лучше отключить
$rcmail_config['log_driver'] = 'file';
$rcmail_config['smtp_log'] = false;
$rcmail_config['log_logins'] = false;
$rcmail_config['log_session'] = false;
$rcmail_config['sql_debug'] = false;
$rcmail_config['imap_debug'] = false;
$rcmail_config['ldap_debug'] = false;
$rcmail_config['smtp_debug'] = true;
# Т.к. IMAP у нас с шифрованием, то порт будет не 143, как по дефолту, и явно указываем SSL
$rcmail_config['default_host'] = 'ssl://localhost';
$rcmail_config['default_port'] = 993;
# SMTP у нас тоже не простой, а с шифрованием. Так что тоже уточняем использование TLS
$rcmail_config['smtp_server'] = 'tls://%n';
# Эту строку генерирует установщик, но можно и самому. Здесь должно быть ровно 24 символа
$rcmail_config['des_key'] = 'QzzTNlFdFnMbGgWbzABF2811';
# Для паролей в не-английской раскладке
$rcmail_config['password_charset'] = 'UTF-8';
После того, как конфиг-файлы успешно залиты на сервер, начинается самое интересное — это тестирование smtp и imap. Должно проходить и то, и другое. Если письма отправляются и авторизация на IMAP проходит — значит, по крайней мере, с авторизацией проблем возникнуть не должно.
Удаляем installer, заходим на mail.example.com.
Авторизуемся с той учетной записью, что создали в postfixadmin, смотрим нашу почту. Пробуем отправить письмо в мир и получить ответ. Если письма доходят в обе стороны — значит все ок.
Небольшой нюанс: папки создаются не сразу, а по мере появления в них сообщений. Так, при первом входе у нас будет только видно только папку «Входящие». Это поведение можно изменить в конфиг-файле.
Небольшой нюанс: папки создаются не сразу, а по мере появления в них сообщений. Так, при первом входе у нас будет только видно только папку «Входящие». Это поведение можно изменить в конфиг-файле.
На этом настройка закончена, можно приглашать пользователей и пользоваться. Разумеется, вряд ли такой сервис можно выпускать в публичное использование посторонними. Но как сервис «для своих» такой вариант вполне годен.
UPD: При переходе с debian 7 на debain 8 выяснилось, что в PHP5.6 (который идет в комплекте с jessie) крайне серьезно подошли к вопросу использования самоподписанных сертификатов. В RoundCube, в
свою очередь (начиная с версии 1.0RC) эти возможности стали активно испоьзовать, а потому в конфиг надо добавить следующие опции в config.inc.php:
Для IMAP:
свою очередь (начиная с версии 1.0RC) эти возможности стали активно испоьзовать, а потому в конфиг надо добавить следующие опции в config.inc.php:
Для IMAP:
1
2 3 4 5 6 7 8 |
$config['default_host'] = 'ssl://mail.nixman.info';
$config['imap_conn_options'] = array( 'ssl' => array( 'verify_peer' => false, 'verify_depth' => 3, 'cafile' => '/etc/openssl/certs/rootCA.crt', ), ); |
Здесь rootCA.crt — это сертификат нашего CA, которым мы подписали сертификаты для почтового сервера. Адрес сервера, разумеется, стоит указать свой.
Для SMTP:
1
2 3 4 5 6 7 8 |
$config['smtp_server'] = 'tls://mail.nixman.info';
$config['smtp_conn_options'] = array( 'ssl' => array( 'verify_peer' => false, 'verify_depth' => 3, 'cafile' => '/etc/openssl/certs/rootCA.crt', ), ); |
Комментариев нет:
Отправить комментарий