Установка и настройка Postfix+Dovecot+Sasl+SSL на Centos 6
1
|
#
nano /etc/hosts
|
1
|
195.64.155.22 server1.kamaok.org.ua server1
|
1.Настройка Postfix
1
|
#
yum install postfix
|
1
|
#
cat /etc/postfix/main.cf | grep -v \# | grep -v ^$
|
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
|
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
mail_owner = postfix
myhostname = server1.kamaok.org.ua
mydomain = kamaok.org.ua
myorigin = $mydomain
inet_interfaces = all
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
unknown_local_recipient_reject_code = 550
#
Указываем доверенные адреса/подсети,с которых можно
отправлять почту(с остальных адресов пересылка будет
запрещена на внешние почтовые ящики(в мир)(с ошибкой при
отправке Relay access denied)
mynetworks = 127.0.0.0/8 WWW.XXX.YYY.ZZZ
in_flow_delay = 1s
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
home_mailbox = Maildir/
mail_spool_directory = /var/spool/mail
smtpd_banner = $myhostname ESMTP $mail_name
debug_peer_level = 2
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
ddd $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.6.6/samples
readme_directory = /usr/share/doc/postfix—2.6.6/README_FILES
|
2.Добавление в автозагрузку, проверка синтаксиса и запуск Postfix
1
|
#
chkconfig —level 2345 postfix on
|
1
|
#
/etc/init.d/postfix check
|
1
|
#
/etc/init.d/postfix start
|
3.Тестируем работоспособность Postfix
Отправка письма на внешний почтовый ящик(например,на mail.ru)
1
|
#
telnet localhost 25
|
1
2
3
4
5
6
|
Trying ::1…
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
220 server1.kamaok.org.ua ESMTP Postfix
|
1
|
ehlo localhost
|
1
2
3
4
5
6
7
8
|
250—server1.kamaok.org.ua
250—PIPELINING
250—SIZE 10240000
250—VRFY
250—ETRN
250—ENHANCEDSTATUSCODES
250—8BITMIME
250 DSN
|
1
|
mail from:<username>@kamaok.org.ua
|
1
|
250 2.1.0 Ok
|
1
|
rcpt to:<username>@mail.ru
|
1
|
250 2.1.5 Ok
|
1
|
data
|
1
|
354 End data with <CR><LF>.<CR><LF>
|
1
2
|
Welcome to my mail server
.
|
1
|
250 2.0.0 Ok: queued as 125355E114F
|
1
|
#
tail -f /var/log/maillog
|
1
2
3
|
Oct 7 22:55:13 server1 postfix/qmgr[1480]: 125355E114F: from=<<username>@kamaok.org.ua>,size=421, nrcpt=1 (queue active)
Oct 7 22:55:18 server1 postfix/smtp[1489]: 125355E114F: to=<<username>@mail.ru>;,relay=mxs.mail.ru[217.69.139.150]:25, delay=38, delays=33/0/0.4/4.3, dsn=2.0.0, status=sent(250 OK id=1Xbaqr—0008Bt—9a)
Oct 7 22:55:18 server1 postfix/qmgr[1480]: 125355E114F: removed
|
Отправка письма самому себе
1
|
#
telnet localhost 25
|
1
2
3
4
5
6
|
Trying ::1…
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
220 server1.kamaok.org.ua ESMTP Postfix
|
1
|
ehlo localhost
|
1
2
3
4
5
6
7
8
|
250—server1.kamaok.org.ua
250—PIPELINING
250—SIZE 10240000
250—VRFY
250—ETRN
250—ENHANCEDSTATUSCODES
250—8BITMIME
250 DSN
|
1
|
mail from: <username>@kamaok.org.ua
|
1
|
250 2.1.0 Ok
|
1
|
rcpt to:<username>@kamaok.org.ua
|
1
|
250 2.1.5 Ok
|
1
|
data
|
1
|
354 End data with <CR><LF>.<CR><LF>
|
1
2
|
Test message
.
|
1
|
#
tail -f /var/log/maillog
|
1
2
3
|
Oct 7 22:57:52 server1 postfix/qmgr[1480]: 72C575E1278: from=<<username>@kamaok.org.ua>, size=412, nrcpt=1 (queue active)
Oct 7 22:57:52 server1 postfix/local[1937]: 72C575E1278: to=<<username>@kamaok.org.ua>,relay=local, delay=19, delays=19/0.03/0/0, dsn=2.0.0, status=sent (delivered to maildir)
Oct 7 22:57:52 server1 postfix/qmgr[1480]: 72C575E1278: removed
|
1
|
#
cat
/home/users/<username>/Maildir/new/1412711872.V90I5ab326M76681.server1.kamaok.org.ua |
4.Установка и настройка Dovecot
1
|
#
yum install dovecot
|
1
|
#
nano /etc/dovecot/dovecot.conf
|
1
2
3
|
protocols = imap pop3 lmtp
#
оставляю только ipv4 интерфейс для прослушивания
listen = *
|
1
|
#
nano /etc/dovecot/conf.d/10-mail.conf
|
1
|
mail_location = maildir:~/Maildir
|
1
|
#
nano /etc/dovecot/conf.d/10-auth.conf
|
1
2
|
disable_plaintext_auth = no
auth_mechanisms = plain login
|
#83 и 84 строки файла
1
|
#
nano +83 /etc/dovecot/conf.d/10-master.conf
|
1
2
|
user = postfix
group = postfix
|
5.Добавление в автозагрузку, проверка синтаксиса и запуск Dovecot
1
|
#
chkconfig —level 2345 dovecot on
|
1
|
#
/etc/init.d/dovecot start
|
1
|
Starting Dovecot Imap: [ OK ]
|
6.Тестируем работоспособность Dovecot
1
|
#
telnet localhost 110
|
1
2
3
4
|
Trying ::1…
Connected to localhost.
Escape character is ‘^]’.
+OK Dovecot ready.
|
1
|
user <username>
|
1
|
+OK
|
1
|
Pass <password>
|
1
|
+OK Logged in.
|
1
|
retr 1
|
1
2
3
|
+OK 921 octets
..........................
.
|
1
2
|
+OK Logging out.
Connection closed by foreign host.
|
7.Настройка SASL-авторизации при отправке письма, чтобы отправлять можно было не привязываясь к списку IP-адресов, указанных в параметре mynetworks.
Тем самым,кроме доверенных адресов/подсетей,указанных в параметре mynetworks, отправка будет разрешена всем, кто успешно авторизовался
Авторизацией будет заниматься Dovecot
1
|
#
nano +88 /etc/dovecot/conf.d/10-master.conf
|
1
2
3
4
5
|
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
|
1
|
#
nano +97 /etc/dovecot/conf.d/10-auth.conf
|
1
|
auth_mechanisms = plain login
|
1
|
#
/etc/init.d/dovecot restart
|
1
2
|
Stopping Dovecot Imap:
[ OK ]
Starting Dovecot Imap: [ OK ]
|
Настраиваем postfix для использования SASL
1
|
#
nano /etc/postfix/main.cf
|
# Удаляю все адреса/подсети,кроме указанных ниже(чтобы убедиться, что авторизация требуется при отправке(иначе отправка будет успешной т.к первым сработает правило permit_mynetworks) mynetworks = 127.0.0.0/8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#SASL
#
включение sasl авторизации
smtpd_sasl_auth_enable = yes
#
за авторизацию будет отвечать dovecot
smtpd_sasl_type = dovecot
#
указывается относительный путь до сокета, для передачи
функций аутентификации пользователей от Postfix серверу
Dovecot. Полный путь до сокета складывается из пути до
директории очереди Postfix + «private/auth» =
«/var/spool/postfix» + «private/auth» =
«/var/spool/postfix/private/auth».
smtpd_sasl_path = private/auth
#не
разрешаем никому отправлять почту с нашего сервера
без авторизации!
smtpd_sasl_security_options = noanonymous
#
включаем поддержку «устаревших» почтовых клиентов, не
поддерживающих RFC 2222
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination
|
Перезапускаем Dovecot и Postfix, проверяем отправку сообщений
8.Настройка TLS/SSL на Postfix
1
|
#
mkdir /etc/postfix/ssl
|
1
|
#
cd /etc/postfix/ssl
|
1
|
#
openssl req -nodes -x509 -days 3650 -newkey rsa:2048
-keyout postfix.key -out postfix.crt
|
На запрос
1
|
Common Name
|
вводим полное имя сервера(имя сервера+имя домена)
1
|
#
hostname -f
|
1
|
server1.kamaok.org.ua
|
1
|
#
nano /etc/postfix/main.cf
|
1
2
3
4
5
6
7
8
9
10
11
|
#TLS
smtpd_tls_auth_only = no
smtp_use_tls = yes
smtp_tls_security_level=may
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/ssl/postfix.key
smtpd_tls_cert_file = /etc/postfix/ssl/postfix.crt
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
|
1
|
#
nano /etc/postfix/master.cf
|
1
2
3
4
|
smtps inet n — n — — smtpd
—o smtpd_tls_wrappermode=yes
—o smtpd_sasl_auth_enable=yes
—o smtpd_client_restrictions=permit_sasl_authenticated,reject
|
1
|
#
/etc/init.d/postfix restart
|
1
2
|
Shutting down postfix:
[ OK ]
Starting postfix: [ OK ]
|
1
|
#
telnet localhost 25
|
1
2
3
4
5
6
|
Trying ::1…
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
220 server1.kamaok.org.ua ESMTP Postfix
|
1
|
ehlo localhost
|
1
2
3
4
5
6
7
8
9
10
11
|
250—server1.kamaok.org.ua
250—PIPELINING
250—SIZE 10240000
250—VRFY
250—ETRN
250—STARTTLS
250—AUTH PLAIN LOGIN
250—AUTH=PLAIN LOGIN
250—ENHANCEDSTATUSCODES
250—8BITMIME
250 DSN
|
9.Настройка TLS/SSL на Dovecot
1
|
#
nano /etc/dovecot/conf.d/10-ssl.conf
|
1
2
3
4
|
ssl = yes
ssl_cert = </etc/postfix/ssl/postfix.crt
ssl_key = </etc/postfix/ssl/postfix.key
ssl_verify_client_cert = no
|
1
|
#
/etc/init.d/dovecot restart
|
1
2
|
Stopping Dovecot Imap: [ OK ]
Starting Dovecot Imap: [ OK ]
|
Для отладки Dovecot можно включить расширенное логирование
1
|
#
nano /etc/dovecot/conf.d/10-logging.conf
|
1
2
3
|
auth_verbose = yes
auth_debug = yes
verbose_ssl = yes
|
Проверка сертификатов
1
|
#
openssl s_client -connect mail.kamaok.org.ua:993 | less
|
1
|
#
openssl s_client -connect mail.kamaok.org.ua:143 -starttls
imap
|
При отпрвке сообщения происходит ошибка типа
1
|
Error: fchown(/home/users/kamaok/Maildir/subscriptions.lock, —1, 12(mail)) failed: Operation notpermitted (egid=500(kamaok), group based on /home/users/kamaok/Maildir)
|
Решение –сделать права рекурсивно 700 на папку /home/users/kamaok/Maildir
1
|
#
chmod –R 700 /home/users/kamaok/Maildir
|
http://wiki2.dovecot.org/Errors/ChgrpNoPerm
Автор: igel