Задача : Почтовый сервер с доменными пользователями.
Для реализации проекта мне потребуется :
1.Операционная система Debian 6.0, так как уже давно мною любима и содержит весь набор пакетов нужных для моей цели.
2.Агента передачи почты или ретранслятора или же MTA Postfix , подробнее тут: http://www.postfix.ru/ , http://ru.wikipedia.org/wiki/Postfix .
3.В качестве IMAP/POP3 сервера Dovecot подробности тут:
http://ru.wikipedia.org/wiki/Dovecot , http://www.dovecot.org/ .
4.Авторизация в Active directory по средствам LDAP , однажды я собирал связку FreeBSD+squid с авторизацией в AD и на сайте http://www.lissyara.su вычитал , что если авторизацию брать с помощью Winbind , то реально будет работать быстрее , так как это служба Windows подробнее :http://smb-conf.ru/winbindd.html . Так что берем Samba и ее часть Winbind , а за билетами обратимся к Kerberos http://ru.wikipedia.org/wiki/Kerberos.
5.Ко всему мне нужен белый IP адрес и MX запись в DNS провайдера , так как сервер у меня глобальный. Для примера: ip 211.212.213.214 Домен MailMy.ru
Приступим:
Установку Debian я пропускаю , так как буду использовать свежую только что установленную
Операционную систему. И в процессе уже ее дополнять.
Для реализации моего плана я буду использовать PAM аутентификацию, так как Linux будет в домене Windows Server. Начнем...
Использую следующие репозитории:
Вставим их в
/etc/apt/sources.list
deb ftp://ftp.ru.debian.org/debian/ stable main contrib non-free
deb-src ftp://ftp.ru.debian.org/debian/ stable main contrib non-free
deb http://debian.nsu.ru/debian/ stable main contrib non-free
deb-src http://debian.nsu.ru/debian/ stable main contrib non-free
deb http://ftp.corbina.net/debian/ stable main contrib non-free
deb-src http://ftp.corbina.net/debian/ stable main contrib non-free
deb http://ftp.debian.chuvsu.ru/debian/ stable main contrib non-free
deb-src http://ftp.debian.chuvsu.ru/debian/ stable main contrib non-free
deb http://ftp.psn.ru/debian/ stable main contrib non-free
deb-src http://ftp.psn.ru/debian/ stable main contrib non-free
deb http://mirror2.corbina.ru/debian/ stable main contrib non-free
deb-src http://mirror2.corbina.ru/debian/ stable main contrib non-free
deb http://mirror.svk.su/debian/ stable main contrib non-free
deb-src http://mirror.svk.su/debian/ stable main contrib non-free
deb http://mirror.yandex.ru/debian/ stable main contrib non-free
deb-src http://mirror.yandex.ru/debian/ stable main contrib non-free
Я их не фильтровал и там есть все что мне надо.
Выполняем обновление
apt-get update
apt-get upgrade
Ставим нужные пакеты
apt-get install krb5-user samba winbind ntp
Настраиваем DNS
/etc/resolv.conf
domain domain.local
search domain.local
nameserver 192.168.2.1
Синхронизируем время с Домен контроллера
/etc/ntp.conf
server domain.local
перезапустим демон ntpd
/etc/init.d/ntp restart
Что бы установить доверительные отношения с сервером нужно принять билет от Kerberos настроим его
Делаю копию конфига по дефолту
cp /etc/krb5.conf /etc/krb5.conf.save
Делаем конфиг пустым
:> /etc/krb5.conf
Вставляем , меняем имя Домена на свои , где имена верхнем регистре соблюдаем именно верхний !
libdefaults]
default_realm = DOMAIN.LOCAL
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
v4_instance_resolve = false
v4_name_convert = {
host = {
rcmd = host
ftp = ftp
}
plain = {
something = something-else
}
}
fcc-mit-ticketflags = true
[realms]
DOMAIN.LOCAL = {
kdc = dc
kdc = dc2
admin_server = dc
default_domain = DOMAIN.LOCAL
}
[domain_realm]
.domain.com = DOMAIN.LOCAL
domain.com = DOMAIN.LOCAL
[login]
krb4_convert = false
krb4_get_tickets = false
Проверим авторизацию запросим билет любого Доменного пользователя
kinit user@DOMAIN.COM
Убедимся что билет есть
klist
Должны появится что-то на подобие
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: user@DOMAIN.COM
Valid starting Expires Service principal
09/27/12 09:24:24 09/27/12 19:24:27 krbtgt/DOMAIN.COM@DOMAIN.COM
renew until 09/28/12 09:24:24
Настройка SAMBA
cp /etc/samba/smb.conf /etc/samba/smb.conf.save
:>/etc/samba/smb.conf
Редактируем
/etc/samba/smb.conf
workgroup = DOMEN
realm = DOMEN.COM
security = ADS
encrypt passwords = true
dns proxy = no
socket options = TCP_NODELAY
domain master = no
local master = no
preferred master = no
os level = 0
domain logons = no
Отключил расшаривание принтеров
load printers = no
show add printer wizard = no
printcap name = /dev/null
disable spoolss = yes
Проверим конфиг smb.conf
Выполним
testparm
Вывод примерно такой
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER
Press enter to see a dump of your service definitions
Ввод в домен Выполним
net ads join -U username -D DOMAIN
Введем пароль
У меня вошел в домен почему-то только из под пользователя administrator
И если все хорошо , то примерно так
Using short domain name -- DOMAIN
Joined 'SMBSRV01' to realm 'domain.com'
Проверим
net ads testjoin
И если прошли то
Join is OK
Настройка Winbind
etc/samba/smb.conf
Внесем в конец конфига
idmap uid = 10000 - 40000
idmap gid = 10000 - 40000
winbind enum groups = yes
winbind enum users = yes
winbind use default domain = yes
template shell = /bin/bash
winbind refresh tickets = yes
winbind uid = 10000 - 40000
winbind gid = 10000 - 40000
И тут после перезагрузки у меня начало ругаться и я снова установил Winbind
apt-get install winbind
Теперь перезагрузим Демонов
/etc/init.d/winbind restart
/etc/init.d/samba restart
Проверим доверительные отношения с AD
wbinfo -t
проверим отображаются ли пользователи и группы
wbinfo -u
wbinfo -g
Для прозрачной работы linux машины и AD
/etc/nsswitch.conf
passwd: compat winbind
group: compat winbind
Проверим работоспособность
getent passwd
getent group
И так МАШИНА в Домене и пользователи теперь с AD есть. Советую немного прочесть «The Book of
Postfix Postfix
Подробное руководство
Современный транспорт
для сообщений
»
Установим комплект пакетов для почтового сервера
Проверим MX запись
dig MailMy.ru MX
Результат такой
; <<>> DiG 9.2.2 P3 <<>> MailMy.ru MX
;; global options: printcmd
;; Got answer:
;; >>HEADER<< opcode: QUERY, status: NOERROR, id: 23929
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;postfix book.com. IN MX
;; ANSWER SECTION:
postfix book.com. 86400 IN MX 10 MailMy.ru
;; AUTHORITY SECTION:
postfix book.com. 86400 IN NS ns3.ray.net.
postfix book.com. 86400 IN NS ns.state of mind.de.
;; ADDITIONAL SECTION:
mail.postfix book.com. 86400 IN A 212.14.92.89
ns.state of mind.de. 81566 IN A 212.14.92.88
Проверим А запись
dig MailMy.ru A
И получим
; <<>> DiG 9.2.1 <<>> MailMy.ru
global options: printcmd
;; Got answer:
;; >>HEADER<< opcode: QUERY, status: NOERROR, id: 30122
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0
;; QUESTION SECTION:
;www.example.com. IN A
;; ANSWER SECTION:
www.example.com. 172627 IN A 192.0.34.166
;; AUTHORITY SECTION:
example.com. 21427 IN NS b.iana servers.net.
example.com. 21427 IN NS a.iana servers.net.
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Apr 17 16:43:40 2004
;; MSG SIZE rcvd: 97
И если все хорошо , то приступим
apt-get install postfix dovecot-common dovecot-imap
Dovecot у меня не самый новый 1.2.15
Отвечаем на все вопросы Postfix
1.Интернет сайт
2.MailMy.ru
3.Пустым оставим
4.MailMy.ru, localhost.MailMy.ru.com , localhost
5.нет
6.127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/24
7.0
8.+
9.Все
Пробуем
telnet MyMail.ru 25
Trying 211.212.213.214...
Connected to MyMail.ru
Escape character is '^]'.
220 MyMail.ru
Отправим письмо пользователю , лучше сразу проверить доменного
helo Im_MAN_)
Mail to: im_MAN@MAN.ru_)
rcpt to: user@MyMail.ru
data
Test
.
Переходим в каталог /var/mail/
и тут должно быть письмо и значит все работает.
Правим конфиг Postfix
cp /etc/postfix/main.cf /etc/postfix/main.cf.save
:>/etc/postfix/main.cf
/etc/postfix/main.cf
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
mydomain = MyMail.ru
#myorigin = /etc/mailname
smtpd_banner = $myhostname
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
# Оставим без изменений ибо мы уже конфигурировали#######
myhostname = MyMail.ru
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = MyMail.ru, postman.MyMail.ru,localhost.eor.local, localhost
relayhost =
##########################################
#Тут моя сеть с выходом на шлюз
mynetworks = 192.168.2.0/24
#Закоментить или удалить я не пользуюсь им
#mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
#ПОЧТУ Буду складывать сюда
mail_spool_directory = /var/mail/
# аутентификацию позаимствую у Dovecot люблю когда все в одном месте
#########################################################
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
#########################################################
Теперь к Dovecot
Вся информация про Dovecot http://wiki.dovecot.org/ или рекомендую http://www.lissyara.su (есть переведенный конфиг)
cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.save
:>/etc/dovecot/dovecot.conf
/etc/dovecot/dovecot.conf
base_dir = /var/run/dovecot/
protocols = imap imaps
listen = *
disable_plaintext_auth = no
log_path = /var/log/dovecot.log
log_timestamp = "%Y-%m-%d %H:%M:%S "
syslog_facility = mail
login_chroot = yes
login_user = dovecot
login_process_size = 32
login_process_per_connection = yes
login_processes_count = 3
login_max_processes_count = 128
login_max_connections = 256
login_greeting = Dovecot ready.
login_log_format_elements = user=<%u> method=%m rip=%r lip=%l %c
login_log_format = %$: %s
auth_verbose = yes
auth_debug = yes
auth_debug_passwords = yes
#
mail_location = maildir:/var/mail/%u
mail_access_groups = mail
mail_cache_fields = flags, date.sent, date.received, size.virtual, size.physical
protocol imap {
imap_client_workarounds = outlook-idle
}
##
## Authentication processes
##
auth default {
mechanisms = plain
#####SMTP авторизация
socket listen {
client {
path = /var/spool/postfix/private/auth
mode = 0666
user = postfix
group = postfix
}
}
#####
passdb pam {
}
userdb passwd {
}
user = root
}
dict {
}
plugin {
}
В маем случае приведен конфиг с расширенными логами для отладки
Создадим
touch /var/log/dovecot.log
Тут будут логи
Генерируем сертификаты
openssl rsa -in server.key -out server.key.insecure && mv server.key server.key.secure && mv server.key.insecure server.key
openssl req -new -key server.key -out server.csr
Отвечаем на вопросы
И перезагружаем Демонов
/etc/init.d/dovecot restart
/etc/init.d/postfix restart