В этой короткой записке описано о включении защищенного протокола в следующих программах/интерфейсе:
1. SMTP сервере Postfix
2. POP3/IMAP сервере Dovecot
3. Web интерфейс RoundCube
Будем двигаться по следующей последовательности:
- Сперва создадим сертификаты по которым будет происходит шифрованное соединение
- Настроим Postfix
- Настроим Dovecot
- Настроим RoundCube
Создаем само подписанные сертификаты
Первым делом надо создать само подписанные сертификаты:
# mkdir /etc/postfix/certs
# openssl req -new -x509 -days 3650 -nodes -out /etc/postfix/certs/cert.pem -keyout /etc/postfix/certs/key.pem
Настройка
А теперь уже можно настраивать Postfix, Dovecot и RoundCube
SMTP сервер Postfix
Открываем файл /etc/postfix/main.cf и добавляем в него настройки (обычно стоят возле smtpd_sasl)
###################TLS######################
smtpd_use_tls = yes
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
smtp_tls_session_cache_database = btree:$data_directory/smtp_tls_session_cache
smtpd_tls_key_file = /etc/postfix/certs/key.pem
smtpd_tls_cert_file = /etc/postfix/certs/cert.pem
tls_random_source = dev:/dev/urandom
###################TLS######################
Открываем файл /etc/postfix/master.cf и находим строчку и раскомментируем ее:
smtps inet n - n - - smtpd
А также добавим в конец файла:
submission inet n - n - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_wrappermode=no
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
-o smtpd_relay_restrictions=permit_mynetworks,permit_sasl_authenticated,defer_unauth_destination
-o milter_macro_daemon_name=ORIGINATING
ssl = yes
ssl_cert = </etc/postfix/certs/cert.pem
ssl_key = </etc/postfix/certs/key.pem
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
}
}
$rcmail_config['default_host'] = 'ssl://10.168.50.2:993';$rcmail_config['force_https'] = true;
- стандартные без шифрования:
578 - SMTP (Submission)
143 - IMAP
110 - POP3
25 - SMTP
- стандартные с шифрованием:
IMAP — 143 (при использовании шифрования STARTTLS) и 993 (при использовании шифрования SSL/TLS)
POP3 — 995 (с шифрованием)
SMTP — 465 (с шифрованием).
Настройки виртуального хоста для веб интерфейса RoundCube
Создаем файл /etc/httpd/conf.d/rc.conf
<Virtualhost mail.point.local:443>
ServerName mail.point.local
ServerAdmin admin@point.local
DocumentRoot "/var/www/html/roundcube/"
SSLEngine on
SSLCertificateFile /etc/postfix/certs/cert.pem
SSLCertificateKeyFile /etc/postfix/certs/key.pem
# Поскольку 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