Как я настраивал себе сервер на FreeBSD (часть 6)
Продолжение предыдущей статьи - Как я настраивал себе сервер на FreeBSD (часть 5). В ней мы настроили Postifx, сейчас же займемся настройкой Dovecot. Для него нам нужно будет создать отдельного пользователя, группу, немного подправить конфиг /usr/local/mail/dovecot.conf
и сменить владельца директории /usr/mail
. Кроме того, нам нужно будет настроить шифрование.
Что ж, перейдем непосредственно к настройке.
Добавим группу в /etc/group
. В самом конце файла дописываем:
sermail:*:150:
При этом смотря, чтобы gid больше нигде не значился. Если он уже существует, то просто меняем его на свободный. Сразу же добавляем и пользователя:
adduser
Username: sermail
Full name:
Uid (Leave empty for default): 150
Login group [sermail]:
Login group is sermail. Invite sermail into other groups? []:
Login class [default]:
Shell (sh csh tcsh nologin) [sh]:
Home directory [/home/sermail]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username : sermail
Password : *****
Full Name :
Uid : 150
Class :
Groups : sermail
Home : /home/sermail
Home Mode :
Shell : /bin/sh
Locked : no
OK? (yes/no): yes
adduser: INFO: Successfully added (sermail) to the user database.
Add another user? (yes/no): no
Goodbye!
Вот. Теперь у нас есть и группа и пользователь для dovecot. Теперь перейдем к правке конфигурационного файла, приводя его к следующему виду:
base_dir = /var/run/dovecot/
protocols = imap pop3 imaps pop3s
disable_plaintext_auth = no
shutdown_clients = yes
log_path = /var/log/dovecot.log
log_timestamp = "%b %d %H:%M:%S "
auth_debug = yes
ssl = no
#ssl_cert_file = /etc/ssl/certs/dovecot.pem
#ssl_key_file = /etc/ssl/private/dovecot.pem
mail_location = maildir:/usr/mail/%d/%n/
namespace private {
separator = .
prefix = INBOX.
inbox = yes
}
mail_privileged_group = sermail
dotlock_use_excl = yes
verbose_proctitle = yes
mail_uid = 150
mail_gid = 150
first_valid_uid = 150
first_valid_gid = 150
maildir_copy_with_hardlinks = yes
protocol imap {
imap_client_workarounds = delay-newmail netscape-eoh tb-extra-mailbox-sep
}
protocol pop3 {
pop3_uidl_format = %08Xu%08Xv
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
}
protocol lda {
postmaster_address = admin@domain.ru
sendmail_path = /usr/sbin/sendmail
auth_socket_path = /var/run/dovecot/auth-master
}
auth_username_format = %Lu
auth default {
mechanisms = plain login
passdb sql {
args = /usr/local/etc/dovecot-sql.conf
}
# userdb static {
# args = uid=500 gid=500 home=/var/mail/%d/%n allow_all_users=yes
# }
# userdb sql {
# args = /usr/local/etc/dovecot-sql.conf
# }
user = sermail
socket listen {
master {
path = /var/run/dovecot/auth-master
mode = 0666
}
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}
}
dict {
}
plugin {
}
Сменим владельца директории /usr/mail
:
sudo chown -R sermail:sermail /usr/mail
Перезапустим dovecot:
sudo /usr/local/etc/rc.d/dovecot stop
sudo /usr/local/etc/rc.d/dovecot start
Теперь можно попробовать залогиниться при помощи telnet:
telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.
user total@domain.ru
+OK
pass 074dimchel
+OK Logged in.
quit
+OK Logging out.
Connection closed by foreign host.
Ну вот, в основном все работает. Теперь самое время добавить немного безопасности. Предлагаю настроить шифрование.
Создадим две папки - certs и private для сертификатов в директории /etc/ssl
:
sudo mkdir /etc/ssl/certs
sudo mkdir /etc/ssl/private
Ну и, собственно, сами сертификаты:
sudo openssl req -new -x509 -days 3650 -nodes -out /etc/ssl/certs/dovecot.pem -keyout /etc/ssl/private/dovecot.pem
Generating a 1024 bit RSA private key
.......++++++
......................................++++++
writing new private key to '/etc/ssl/private/dovecot.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:Russia
Locality Name (eg, city) []:chel
Organization Name (eg, company) [Internet Widgits Pty Ltd]:domail.ru
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:mail.domain.com
Email Address []:postmaster@domail.com
Также создадим сертификаты для postifx:
sudo openssl req -new -x509 -days 3650 -nodes -out /etc/ssl/certs/postfix.pem -keyout /etc/ssl/private/postfix.pem
Generating a 1024 bit RSA private key
...++++++
..............................++++++
writing new private key to '/etc/ssl/private/postfix.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:Russia
Locality Name (eg, city) []:chel
Organization Name (eg, company) [Internet Widgits Pty Ltd]:domain.ru
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:mail.domain.ru
Email Address []:postmaster@domain.ru
Поменяем права доступа:
chmod o= /etc/ssl/private/postfix.pem
chmod o= /etc/ssl/private/dovecot.pem
Когда готовы сертификаты, раскомментируем две строчки в конфигурационном файле dovecot.conf
, приведя их к следующему виду:
ssl_cert_file = /etc/ssl/certs/dovecot.pem
ssl_key_file = /etc/ssl/private/dovecot.pem
А в конфиг postfix, main.cf
, добавим эту строчку:
smtpd_use_tls=yes
Последнее, что надо сделать, это поменять права доступа на лог dovecot.log
:
sudo chown sermail:sermail /var/log/dovecot.log
Теперь перезапускаем postfix и dovecot и проверяем работоспособность ssl, отправки и принятия почтовых сообщений.
sudo /usr/local/etc/rc.d/dovecot stop && sudo /usr/local/etc/rc.d/dovecot start
sudo postfix reload
telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 home-server ESMTP Postfix
helo domain.ru
250 home-server
mail from: test@domain2.ru
250 2.1.0 Ok
rcpt to: total@domain.ru
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
test/test/testPP
.
250 2.0.0 Ok: queued as D387A5BCACC
quit
221 2.0.0 Bye
Connection closed by foreign host.
openssl s_client -host localhost -port 995
+OK Dovecot ready.
user total@domain.ru
+OK
pass 074dimchel
+OK Logged in.
list
+OK 2 messages:
1 408
2 397
.
retr 2
+OK 397 octets
Return-Path: <test@domain2.ru>
Delivered-To: total@domain.ru
Received: from domain.ru (localhost [127.0.0.1])
by home-server (Postfix) with SMTP id D387A5BCACC
for <total@domain.ru>; Sat, 9 Feb 2013 00:41:12 +0600 (YEKT)
Message-Id: <20130208184121.D387A5BCACC@home-server>
Date: Sat, 9 Feb 2013 00:41:12 +0600 (YEKT)
From: test@domain2.ru
test/test/testPP
.
quit
Как видно, письмо было отправлено и оно дошло. При этом работает и ssl шифрование. На этом все. Оставляйте ваши вопросы и пожелания в комментариях.
Добавить комментарий