Настройка TLS/SSL в Exim, Dovecot и Roundcube
Создаем само подписанные сертификаты
# mkdir /etc/exim/certs
# openssl req -new -x509 -days 3650 -nodes -out /etc/exim/certs/cert.pem -keyout /etc/exim/certs/key.pem
Данные ключи будут использоваться для шифрованного канала.
Продолжим нашу настройку, подправим конфигурационные файлы Exim, Dovecot и RoundCube
Настройка Exim
Добавляем в /etc/exim/exim.conf
daemon_smtp_ports = 25:465:587
########## TLS ############
tls_on_connect_ports = 465
tls_advertise_hosts = *
tls_certificate = /etc/exim/certs/cert.pem
tls_privatekey = /etc/exim/certs/key.pem
#auth_advertise_hosts = ${if eq{$tls_cipher}{}{}{*}}
########## TLS ############
Настройка Dovecot
Добавляем в /etc/dovecot/dovecot.conf
ssl_cert=</etc/exim/certs/cert.pem
ssl_key=</etc/exim/certs/key.pem
ssl = yes
А также вписываем или меняем:
service imap-login {
executable = /usr/libexec/dovecot/imap-login
inet_listener imap {
address = *
port = 143
}
inet_listener imaps {
port = 993
ssl = yes
}
}
service imap {
executable = /usr/libexec/dovecot/imap
}
service pop3-login {
executable = /usr/libexec/dovecot/pop3-login
inet_listener pop3 {
address = *
port = 110
}
inet_listener pop3s {
port = 995
ssl = yes
}
}
Настройка RoundCube
Открываем файл /var/www/html/roundcube/config/main.inc.php
В нем находим строчки и меняем их значения на:
$rcmail_config['default_host'] = 'ssl://10.168.50.2:993';
$rcmail_config['force_https'] = true;
Здесь можно вписать доменное имя или IP адрес почтового сервера.
А тут мы дали указания RoundCube, чтобы он обращался по SSL соединению к Dovecot, который в свою очередь поможет работать с почтой.
Настройка виртуального хоста в Apache:
<Virtualhost mail.point.local>
ServerName mail.point.local
ServerAdmin admin@point.local
DocumentRoot "/var/www/html/roundcube/"
##SSL##
SSLEngine on
SSLCertificateFile /etc/exim/certs/cert.pem
SSLCertificateKeyFile /etc/exim/certs/key.pem
##SSL##
# Поскольку roundcube написан на PHP и мы
# не предполагаем запуск чего-либо кроме PHP скриптов
# на этом виртуалхосте, то на всякий случай отключаем CGI
# и запрещаем изменение параметров ./htaccess'ом
<Directory "/var/www/html/roundcube/">
Options -ExecCGI
AllowOverride None
SSLRequireSSL
</Directory>
# Запрещаем PHP скриптам выходить за пределы
# директории виртуалхоста
php_admin_value open_basedir /var/www/html/roundcube
php_admin_value safe_mode_include_dir /var/www/html/roundcube
#php_admin_value safe_mode_exec_dir /noexec
php_admin_value doc_root /var/www/html/roundcube
php_admin_value upload_tmp_dir /var/www/html/roundcube/temp
php_admin_value session.save_path /var/www/html/roundcube/temp
# Логирование
ErrorLog /var/log/httpd/roundcube-error.log
TransferLog /var/log/httpd/roundcube-access.log
</Virtualhost>
Теперь можно заходить на веб интерфейс почтового сервера с адреса - https://mail.point.local
Настройка iptables
Когда будете настраивать сетевой брандмауэр, откройте следующие порты:
- стандартные без шифрования:
578 - SMTP (Submission)
143 - IMAP
110 - POP3
25 - SMTP
- стандартные с шифрованием:
IMAP — 143 (при использовании шифрования STARTTLS) и 993 (при использовании шифрования SSL/TLS)
POP3 — 995 (с шифрованием)
SMTP — 465 (с шифрованием).
Например фаервол можно настроить так:
#!/bin/bash
#Очистка всех цепочек
iptables -F
iptables -F -t nat
iptables -F -t mangle
iptables -X
iptables -X -t nat
iptables -X -t mangle
#Политика по умолчанию - запретить все, что не разрешено
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#Разрешаем обращение к lo интерфейсу
iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A OUTPUT -o lo -p all -j ACCEPT
#Пропускать уже инициированные, а также их дочерние
iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
#Пропускать новые, инициированные, а также их дочерние
iptables -A OUTPUT -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
#Разрешаем обращение к почтовым портам
iptables -A INPUT -p tcp -m multiport --dports 25,110,143,443,465,587,993,995 -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --sports 25,110,143,443,465,587,993,995 -j ACCEPT