LinuxForum.Fans
Тема

Postfix+Dovecot с доменными пользователями

Автор: l_cho 1 сообщений 3928 просмотров
#276683

Задача : Почтовый сервер с доменными пользователями.
Для реализации проекта мне потребуется :
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. Начнем...

Использую следующие репозитории:
Вставим их в

text

/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

Я их не фильтровал и там есть все что мне надо.
Выполняем обновление

text

apt-get update
apt-get upgrade

Ставим нужные пакеты

text

apt-get install krb5-user samba winbind ntp

Настраиваем DNS

text

/etc/resolv.conf

domain domain.local search domain.local nameserver 192.168.2.1

Синхронизируем время с Домен контроллера

text

/etc/ntp.conf

server domain.local

перезапустим демон ntpd

text

/etc/init.d/ntp restart

Что бы установить доверительные отношения с сервером нужно принять билет от Kerberos настроим его
Делаю копию конфига по дефолту

text

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

Проверим авторизацию запросим билет любого Доменного пользователя

text

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

text

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
Выполним

text

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

text

Ввод в домен Выполним

net ads join -U username -D DOMAIN Введем пароль

У меня вошел в домен почему-то только из под пользователя administrator

И если все хорошо , то примерно так

text

Using short domain name -- DOMAIN
Joined 'SMBSRV01' to realm 'domain.com'

Проверим

text

net ads testjoin

И если прошли то

Join is OK

Настройка Winbind

text

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

text

apt-get install winbind

Теперь перезагрузим Демонов

text

/etc/init.d/winbind restart
/etc/init.d/samba restart

Проверим доверительные отношения с AD

text

wbinfo -t

проверим отображаются ли пользователи и группы

wbinfo -u wbinfo -g

Для прозрачной работы linux машины и AD

text

 /etc/nsswitch.conf

passwd: compat winbind group: compat winbind

Проверим работоспособность

getent passwd getent group

И так МАШИНА в Домене и пользователи теперь с AD есть. Советую немного прочесть «The Book of
Postfix Postfix
Подробное руководство
Современный транспорт
для сообщений
»
Установим комплект пакетов для почтового сервера

Проверим MX запись

text

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

Проверим А запись

text

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

И если все хорошо , то приступим

text

apt-get install postfix dovecot-common dovecot-imap

Dovecot у меня не самый новый 1.2.15

text

Отвечаем на все вопросы 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.Все

Пробуем

text

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

text

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 (есть переведенный конфиг)

text

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 { }

В маем случае приведен конфиг с расширенными логами для отладки
Создадим

text

touch /var/log/dovecot.log

Тут будут логи

Генерируем сертификаты

text

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
Отвечаем на вопросы

И перезагружаем Демонов

text

/etc/init.d/dovecot restart
/etc/init.d/postfix restart
Войдите или зарегистрируйтесь, чтобы ответить.