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 not permitted (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
Источники:
http://www.unixmen.com/install-postfix-mail-server-with-dovecot-and-squirrelmail-on-centos-6-4/
http://xmodulo.com/enable-user-authentication-postfix-smtp-server-sasl.html
http://www.krizna.com/centos/setup-mail-server-in-centos-6/#!