|
|
www.lissyara.su
—> статьи
—> FreeBSD
—> почтовые системы
—> Postfix + LDAP
Postfix + SASL + LDAP + Courier-IMAP + SSL
Автор: fr33man.
Обновленная версия статьи лежит здесь.
Потребовалось настроить почтовую систему для моего домена. Причем нужно было, как то связать почтовый сервер и базу LDAP, так как в LDAP
хранилась вся информация о пользователях. Пошарив инет, я нашел, то что меня интересовало в первую очередь — схема для ldap сервера(в принципе
можно и самому написать было, но лень :))) После этого, выбрав в качестве MTA Postfix, я быстренько все настроил, и чтобы не забыть как я все
это сделал, решил написать how-to.
Еще немного, про софт, который я использую:
cyrus-sasl используется postfix'ом для авторизации пользователей.
LDAP — база данных, где храниться информация о пользователях
Postfix — MTA, программа, которая и будет отсылать/принимать сообщения и расскладывать их в ящики пользователей
Courier-imap — MUA, программа, которая позволяет забрать письма пользователю с сервера.
Для начала советую прочесть данную статью.
Итак, приступим к установке и настройке.
Сначала, необходимо произвести изменения на стороне LDAP сервера. Качаем схемку для почты здесь и кладем ее в
/usr/local/etc/openldap/schema/mail.schema. Это схема от qmail, но она подойдет.
Вносим изменения в slapd.conf, добавляем:
include /usr/local/etc/openldap/schema/mail.schema
| После этого перезапускаем slapd. Теперь необходимо поглумиться над пользователми и добавить каждому новый класс и пару аттрибутов.
У меня 81 пользователь и мне было лень добавлять аттрибуты вручную, поэтому я написал такой скриптик:
#!/usr/bin/perl
# Открываем файл с юзверями
open(USERS, "<users" );
# и читаем все в массив
@all = <USERS>;
# Закрываем файлик
close(USERS);
foreach $user (@all)
{
# Удаляем символы \n в имени юзера
chomp($user);
# Создаем ldif файл для пользователя
open(LDIF, ">/tmp/".$user.".modify.ldif");
# Описываем ldif файл
print LDIF "dn: cn=".$user.",ou=users,dc=l1523,dc=ru\n";
print LDIF "changetype: modify\n";
print LDIF "add: objectClass\n";
print LDIF "objectCLass: qmailUser\n";
print LDIF "-\n";
print LDIF "add: mail\n";
print LDIF "mail: ".$user."\@mail.teachers\n";
print LDIF "-\n";
print LDIF "add: mailMessageStore\n";
print LDIF "mailMessageStore: ".$user."/\n";
print LDIF "-\n";
print LDIF "add: mailQuotaSize\n";
print LDIF "mailQuotaSize: 10485760\n";
print LDIF "-\n";
close(LDIF);
# Вносим изменения в директории LDAP
system("/usr/local/bin/ldapmodify -x -D \"cn=root,dc=l1523,dc=ru\"
-w ROOT_PASSWORD -f /tmp/".$user.".modify.ldif");
# удаляем временный файл
system("rm -rf /tmp/".$user.".modify.ldif");
}
| Для корректной работы, необходимо занести в users всех пользователей, которым необходимо добавить аттрибуты. Делается это например так:
spider@/home/fr33man/> ldapsearch -LLL -b 'ou=users,dc=l1523,dc=ru' \
? -x '(|(cn=*)(uid=*))' | \
? grep dn: | awk '{print $2}' | cut -f 2 -d "=" | cut -f 1 -d "," > users
spider@/home/fr33man/>
| Теперь можно запускать скриптик. После этого, можно посмотреть изменения:
spider@/home/fr33man/> ldapsearch -LLL -x -b 'dc=l1523,dc=ru' \
? 'uid=fr33man' | grep mail
objectClass: qmailUser
mailAlternateAddress: root@mail.teachers
mail: fr33man@mail.teachers
mailMessageStore: fr33man/
mailQuotaSize: 10485760
spider@/home/fr33man/>
| Да, как видите, тут присутствует еще один аттрибут: mailAlternateAddress, это alias для моего ящика. То есть письма для root@mail.teachers будут
идти на адресс fr33man@mail.teachers. Это добавил я, а не скрипт. Все, на стороне LDAP сервера изменения внесены. Теперь переходим непосредственно
к настройке mail сервера.
Первым делом, как всегда, обновляем порты, и ставим cyrus-sasl2:
mail@/> cd /usr/ports/security/cyrus-sasl2-saslauthd/
mail@/usr/ports/security/cyrus-sasl2-saslauthd> make -DWITH_OPENLDAP install clean
... skipped ...
mail@/usr/ports/security/cyrus-sasl2-saslauthd>
| Теперь составим конфиг для sasl:
mail@/> cd /usr/local/lib/sasl2/
mail@/usr/local/lib/sasl2> cat smtpd.conf
pwcheck_method: saslauthd
mech_list: CRAM-MD5 DIGEST-MD5 PLAIN LOGIN
log_level: 3
mail@/usr/local/lib/sasl2>
| Осталось запустить saslauthd:
mail@/usr/local/lib/sasl2> echo saslauthd_enable=\"YES\" >> /etc/rc.conf
mail@/usr/local/lib/sasl2> echo saslauthd_flags=\"-a ldap\" >> /etc/rc.conf
mail@/usr/local/lib/sasl2> /usr/local/etc/rc.d/saslauthd.sh start
Starting saslauthd.
mail@/usr/local/lib/sasl2> ps ax | grep sasl
15036 ?? Ss 0:00,01 /usr/local/sbin/saslauthd -a ldap
15037 ?? S 0:00,00 /usr/local/sbin/saslauthd -a ldap
15038 ?? S 0:00,00 /usr/local/sbin/saslauthd -a ldap
15039 ?? S 0:00,00 /usr/local/sbin/saslauthd -a ldap
15040 ?? S 0:00,00 /usr/local/sbin/saslauthd -a ldap
15042 p2 R+ 0:00,00 grep sasl
mail@/usr/local/lib/sasl2>
| Усе, с sasl'ом разобрались. Идем дальше — postfix:
mail@/> cd /usr/ports/mail/postfix
mail@/usr/ports/mail/postfix> make config
---------------------------------------------------------------------¬
¦ Options for postfix 2.3.4,1 ¦
¦ -----------------------------------------------------------------¬ ¦
¦ ¦[X] PCRE Perl Compatible Regular Expressions ¦ ¦
¦ ¦[ ] SASL Cyrus SASLv1 (Simple Auth. and Sec. Layer) ¦ ¦
¦ ¦[X] SASL2 Cyrus SASLv2 (Simple Auth. and Sec. Layer) ¦ ¦
¦ ¦[ ] DOVECOT Dovecot SASL authentication method ¦ ¦
¦ ¦[ ] SASLKRB If your SASL req. Kerberos select this option ¦ ¦
¦ ¦[ ] SASLKRB5 If your SASL req. Kerberos5 select this option ¦ ¦
¦ ¦[ ] SASLKMIT If your SASL req. MIT Kerberos5 select this option¦ ¦
¦ ¦[X] TLS Enable SSL and TLS support ¦ ¦
¦ ¦[ ] BDB Berkeley DB (choose version with WITH_BDB_VER) ¦ ¦
¦ ¦[ ] MYSQL MySQL maps (choose version with WITH_MYSQL_VER) ¦ ¦
¦ ¦[ ] PGSQL PostgreSQL maps (choose with DEFAULT_PGSQL_VER) ¦ ¦
¦ ¦[X] OPENLDAP OpenLDAP maps (choose ver. with WITH_OPENLDAP_VER)¦ ¦
¦ ¦[ ] CDB CDB maps lookups ¦ ¦
¦ ¦[ ] NIS NIS maps lookups ¦ ¦
¦ ¦[X] VDA VDA (Virtual Delivery Agent) ¦ ¦
¦ ¦[ ] TEST SMTP/LMTP test server and generator ¦ ¦
+-L----v(+)----------------------------------------------------------+
¦ [ OK ] Cancel ¦
+---------------------------------------------------------------------
mail@/> make install clean
... skipped ...
mail@/usr/ports/mail/postfix> rehash
| Составляем конфиг для postfix:
# От меня. ))
# Сразу оговорюсь, конфиг составлял не я, а мой хороший друг Alex_hha
# Оригинал его статьи и его конфиг можно увидеть здесь:
# http://turbogaz.kharkov-ua.com/unix/mail/mail-howto-p1.php
# Мое описание тут только о LDAP и еще несколько строк, о которых я скажу
# Так что копирайт конфига не мой. )) Все дружно благодарим Алексея.
#
# /usr/local/etc/postfix/main.cf
#
# LOCAL PATHNAME INFORMATION
#
# Указываем месторасположения директории очереди postfix. Также данная
# директория является корнем, когда postfix запускается в chroot окружении.
queue_directory = /var/spool/postfix
# Задает месторасположение всех postXXX команд (postmap, postconf, postdrop)
command_directory = /usr/local/sbin
# Задает месторасположение всех программ демонов postfix. Это программы,
# перечисленные в файле master.cf. Владельцем этой директории должен быть root
daemon_directory = /usr/local/libexec/postfix
# QUEUE AND PROCESS OWNERSHIP
#
# Задает владельца очереди postfix, а также большинства демонов postfix.
# В целях безопасности, необходимо использовать выделенную учетную запись.
# Т.е. от данного пользователя не должны запускаться какие-либо процессы
# в системе, а также он не должен являться владельцем каких-либо файлов.
mail_owner = postfix
# Права по умолчанию, использующиеся local delivery agent. Не указывайте
# здесь привилегированного пользователя или владельца postfix.
default_privs = nobody
# INTERNET HOST AND DOMAIN NAMES
#
# Задает имя хоста в формате FQDN. По умолчанию, используется значение,
# возвращаемой функцией gethostname().
myhostname = mail.teachers
# Задает имя нашего домена. По умолчанию используется значение $myhostname
# минус первый компонент.
mydomain = mail.teachers
# SENDING MAIL
#
# Данный параметр указывает имя домена, которое используется при отправлении
# почты с этой машины. По умолчанию, используется имя локальной машины -
# $myhostname. Для согласованности между адресами отправителя и получателя,
# myorigin также указывает доменное имя, которое добавляется к адресу
# получателя для которого не указана доменная часть.
# myorigin = $myhostname (отправлять письма от: "alex@freebsd.turbogaz.net")
# myorigin = $mydomain (отправлять письма от: "alex@turbogaz.net")
myorigin = $mydomain
# RECEIVING MAIL
#
# Указывает адреса сетевых интерфейсов, на которых будет принимать почту
# наша почтвая система. По умолчанию используются все активные интерфейсы
# на машине. При изменении этого праметра необходимо перезапустить postfix
inet_interfaces = all
# Данный параметр указывет список доменов, для которых почта будет доставляться
# локально, а не пересылаться на другой хост.
mydestination = localhost.$mydomain, localhost
# REJECTING MAIL FOR UNKNOWN LOCAL USERS
#
# Указывает код ответа SMTP сервера для несуществующих пользователей
unknown_local_recipient_reject_code = 550
# TRUST AND RELAY CONTROL
#
# Данный параметр задает список "доверенных" клиентов, которые обладают
# некоторыми привилегиями. В частности доверенным SMTP клиентам дозволено
# пересылать почту через postfix. Если вы не доверяете никому, то оставьте
# только 127.0.0.0/8
mynetworks = 127.0.0.0/8
# ALIAS DATABASE
#
# Данный параметр указывает список алиасов, используемый local delivery agent
alias_maps = hash:/etc/mail/aliases
# JUNK MAIL CONTROLS
#
# The controls listed here are only a very small subset. The file
# SMTPD_ACCESS_README provides an overview.
# The header_checks parameter specifies an optional table with patterns
# that each logical message header is matched against, including
# headers that span multiple physical lines.
#
# By default, these patterns also apply to MIME headers and to the
# headers of attached messages. With older Postfix versions, MIME and
# attached message headers were treated as body text.
#
# For details, see "man header_checks".
#
#header_checks = regexp:/usr/local/etc/postfix/header_checks
# SHOW SOFTWARE VERSION OR NOT
#
# Желательно сообщать как можно меньше информации о нашем почтовом сервере ;)
# Согласно требованиям RFC вы должны указать $myhostname вначале текста
smtpd_banner = $myhostname mail server
# DEBUGGING CONTROL
#
# Задает уровень информативности, когда имя или адрес SMTP клиента
# или сервера соответствует шаблону заданному в параметре debug_peer_list.
# Следует использовать только во время отладки.
#debug_peer_level = 2
#debug_peer_list = 127.0.0.1
#debug_peer_list = teachers
# Это уже я писал, только про эту строчку.
# Захотелось получать сообщения ою ошибках на русском
# Если сообщения на русском не нужны, то закомментируйте данную строку
bounce_template_file = /usr/local/etc/postfix/bounce.cf
# RESTRICTIONS
#
# client, helo, sender, recipient, data, end-of-data
#
# Отклонять запрос, если хост не имеет в DNS A или MX записи.
#smtpd_helo_restrictions = reject_unknown_hostname
# Отклонять запрос, когда клиент посылает SMTP команду раньше времени.
smtpd_data_restrictions = reject_unauth_pipelining
# Отклонять команду ETRN
smtpd_etrn_restrictions = reject
# Заставляем отклонять почту с неизвестным адресом отправителя.
# Позволяет бороться с червями и некоторыми вирусами.
#smtpd_reject_unlisted_sender = yes
# Отключает SMTP команду VRFY. В результате чего, невозможно определить
# существование определенного ящика. Данная техника (применение команды
# VRFY) используется спамерами для сбора имен почтовых ящиков.
disable_vrfy_command = yes
# Требуем, чтобы удаленный SMTP клиент представлял себя
# в начале SMTP сессии с помощью команды HELO или EHLO.
smtpd_helo_required = yes
# Всегда отправлять EHLO вначале SMTP сессии
smtp_always_send_ehlo = yes
# Максимальное количество ошибок, которое может сделать удаленный SMTP клиент.
# При превышение данного числа Postfix отсоединится.
smtpd_hard_error_limit = 8
# Интервал времени в течение которого SMTP сервер Postfix должен послать ответ,
# а удаленный SMTP клиент получить запрос
smtpd_timeout = 30s
# Интервал времени, в течение которого SMTP клиент должен послать
# SMTP команду HELO или EHLO и получить ответ сервера.
smtp_helo_timeout = 15s
# Интервал времени, в течение которого SMTP клиент должен послать
# SMTP команду RCPT TO и получить ответ сервера.
smtp_mail_timeout = 15s
# Интервал времени, в течение которого SMTP клиент должен послать
# SMTP команду MAIL FROM и получить ответ сервера.
smtp_rcpt_timeout = 15s
# Включаем поддержку sasl аутентификации
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain =
# Необходимо для корректной работы клиентов, использующих устаревший
# метод AUTH, например outlook express
broken_sasl_auth_clients = yes
# Запрещаем анонимную авторизацию
smtpd_sasl_security_options = noanonymous
# Указываем, где postfix должен брать информацию о транспорте
transport_maps = hash:/usr/local/etc/postfix/transport.conf
# Указываем, где postfix должен брать информацию о алиасах
#virtual_alias_maps = mysql:/usr/local/etc/postfix/mysqlLookupMaps/alias.conf
# Указываем, где postfix должен брать информацию о доменах
virtual_mailbox_domains = $mydomain localhost localhosy.$mydomain
# Корень для почтовых сообщений
virtual_mailbox_base = /var/spool/mail/
# От меня. )
# Я не стал выносить конфиг для соединения с LDAP сервером
# в отдельный файл, поэтому все настройки будут в основном файле
# Указываем, где postfix должен брать информацию о почтовых ящиках
virtual_mailbox_maps = ldap:ldapvirtual
# Хост, на котором крутится LDAP
ldapvirtual_server_host = ldaps://spider.teachers/
# Порт на котором висит LDAP
ldapvirtual_server_port = 636
# Соединяться с сервером
ldapvirtual_bind = yes
# Версия протокола
# Очень долго мучился из-за этой опции
# Не хотело соединяться и все!
# Кстати, есть альтернатива, можно в slapd.conf добавить:
# allow bind_v2
ldapvirtual_version = 3
# С какого объекта начинать поиск
ldapvirtual_search_base = ou=users,dc=l1523,dc=ru
# Ищем пользователя, у которого нужный нам почтовый адрес
ldapvirtual_query_filter = (mail=%s)
# Выхватываем информацию, о том, в какой директории лежит почта пользователя
ldapvirtual_result_attribute = mailMessageStore
# Описываем alias'ы.
virtual_alias_maps = ldap:ldapalias
# далее стандартные параметры. См выше для описания
ldapalias_server_host = ldaps://spider.teachers/
ldapalias_server_port = 636
ldapalias_bind = yes
ldapalias_version = 3
ldapalias_search_base = ou=users,dc=l1523,dc=ru
# Ищем пользователя, у которого есть альтернативный почтовый ящик
ldapalias_query_filter = (mailAlternateAddress=%s)
# Выхватываем настоящий ящик
ldapalias_result_attribute = mail
# Настраиваем поддержку квот
virtual_mailbox_limit_maps = ldap:ldapquota
ldapquota_server_host = ldaps://spider.teachers/
ldapquota_server_port = 636
ldapquota_bind = yes
ldapquota_version = 3
ldapquota_search_base = ou=users,dc=l1523,dc=ru
# Ищем пользователя, у которого нужный нам почтовый ящик
ldapquota_query_filter = (mail=%s)
# Хватаем размер maildir'а.
ldapquota_result_attribute = mailQuotaSize
# Относится к поддержке квот
virtual_maildir_extended=yes
virtual_mailbox_limit_override=yes
virtual_create_maildirsize = yes
virtual_overquota_bounce = yes
virtual_maildir_limit_message="Sorry, the user's maildir has
overdrawn his diskspace quota, please try again later"
# Ограничиваем максимальный размер письма до 10Мб
message_size_limit = 10485760
# 1981 - uid и gid пользователя и группы virtual соответственно
virtual_gid_maps = static:1981
virtual_uid_maps = static:1981
virtual_minimum_uid = 1000
# Перенаправляем всю почту amavisd-new. Если вы еще не настроили amavisd,
# то пока закомментируйте эту строку. Иначе почтовая система не будет работать.
#content_filter=smtp-amavis:[127.0.0.1]:10024
# Параметры ssl
# Путь к Сертефикату
smtpd_tls_cert_file = /usr/local/etc/ssl/pop3d.pem
smtpd_tls_key_file = $smtpd_tls_cert_file
# Уровень отладки
smtpd_tls_loglevel = 1
# Использовать tls
smtpd_use_tls = yes
# Авторизация только по безопасному соединению
smtpd_tls_auth_only = yes
| На этом конфиг закончился. Выполняем необходимые действия, но не запускаем postfix, не забывайте, что нам нужно создать еще и сертефикат, а пока добаляем пользователя virtual и добавляем домен mail.teachers:
mail@/> pw groupadd virtual -g 1981
mail@/> pw useradd virtual -u 1981 -g 1981
mail@/> id virtual
uid=1981(virtual) gid=1981(virtual) groups=1981(virtual)
mail@/> cd /usr/local/etc/postfix/
mail@/usr/local/etc/postfix> cat > transport.conf
mail.teachers virtual
mail@/usr/local/etc/postfix> makemap hash transport.conf.db < transport.conf
mail@/usr/local/etc/postfix> ll transport.conf.db
-rw-r----- 1 root wheel 16K 17 сен 19:33 transport.conf.db
mail@/> echo postfix_enable=\"YES\" >> /etc/rc.conf
mail@/> /usr/local/etc/rc.d/postfix.sh start
postfix/postfix-script: starting the Postfix mail system
mail@/>
| Теперь насчет русских сообщений об ошибках. Топаем в /usr/local/etc/postfix и копируем дефолтный конфиг для сообщений об ошибках:
mail@/> cd /usr/local/etc/postfix/
mail@/usr/local/etc/postfix> cp bounce.cf.default bounce.cf
mail@/usr/local/etc/postfix>
| После этого можно редактировать bounce.cf, там все понятно без комментов, просто приведу пример для одного типа сообщений:
bounce.cf
... skipped ...
failure_template = <<EOF
Charset: koi8-r
From: MAILER-DAEMON (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
Postmaster-Subject: Postmaster Copy: Undelivered Mail
Это сообщение было сгенерировано почтовой системой, $myhostname.
Ваше сообщение не может быть доставлено, из-за следующей проблемы:
EOF
... skipped ...
| Теперь переходим к установке courier-imap. Сначала ставим courier-authlib:
mail@/> cd /usr/ports/security/courier-authlib
mail@/usr/ports/security/courier-authlib> make config
---------------------------------------------------------------------¬
¦ Options for courier-authlib 0.58_2 ¦
¦ -----------------------------------------------------------------¬ ¦
¦ ¦ [ ] GDBM Use gdbm instead of system bdb ¦ ¦
¦ ¦ [X] AUTH_LDAP LDAP support ¦ ¦
¦ ¦ [ ] AUTH_MYSQL MySQL support ¦ ¦
¦ ¦ [ ] AUTH_PGSQL PostgreSQL support ¦ ¦
¦ ¦ [ ] AUTH_USERDB Userdb support ¦ ¦
¦ ¦ [ ] AUTH_VCHKPW Vpopmail/vchkpw support ¦ ¦
¦ ¦ ¦ ¦
+-L------------------------------------------------------------------+
¦ [ OK ] Cancel ¦
L---------------------------------------------------------------------
mail@/usr/ports/security/courier-authlib> make install clean
... skipped ...
mail@/usr/ports/security/courier-authlib>
| Теперь переходим непосредственно к настройке:
/usr/local/etc/authlib/authdaemonrc:
# Список модулей авторизации
authmodulelist="authldap"
authmodulelistorig="authldap"
# Количество запускаемых демонов
daemons=5
authdaemonvar=/var/run/authdaemond
subsystem=mail
# Уровень отладки
DEBUG_LOGIN=2
DEFAULTOPTIONS="wbnodsn=1"
LOGGEROPTS=""
| /usr/local/etc/authlib/authldaprc:
# Хост LDAP сервера
LDAP_URI ldaps://spider.teachers/
# Версия протокола
LDAP_PROTOCOL_VERSION 3
# Корень LDAP сервера
LDAP_BASEDN dc=l1523,dc=ru
# Под кем соединяться
LDAP_BINDDN cn=root,dc=l1523,dc=ru
# Пароль для соединения
LDAP_BINDPW 9vpIj9
# Timeout соединения
LDAP_TIMEOUT 5
# Соединяемся с сервером
LDAP_AUTHBIND 1
# Директива, в которой храниться название почтового ящика пользователя
LDAP_MAIL mail
# Домен
LDAP_DOMAIN mail.teachers
# Под кем работаем
LDAP_GLOB_UID 1981
LDAP_GLOB_GID 1981
# Домащняя директория пользователя
LDAP_HOMEDIR mailMessageStore
# Корень, где храниться почта
LDAP_MAILROOT /var/spool/mail
# Имя пользователя храниться в cn
LDAP_FULLNAME cn
# Защифрованный пароль пользователя храниться в UserPassword
LDAP_CRYPTPW userPassword
LDAP_DEREF never
LDAP_TLS 0
| Запускаем:
mail@/> echo courier_authdaemond_enable=\"YES\" >> /etc/rc.conf
mail@/> /usr/local/etc/rc.d/courier-authdaemond.sh start
Starting courier_authdaemond.
mail@/>
| Теперь переходим к настройке courier-imap:
mail@/> cd /usr/ports/mail/courier-imap/
mail@/usr/ports/mail/courier-imap> make config
---------------------------------------------------------------------¬
¦ Options for courier-imap 4.1.1,1 ¦
¦ -----------------------------------------------------------------¬ ¦
¦ ¦ [X] OPENSSL Build with OpenSSL support ¦ ¦
¦ ¦ [ ] FAM Build in fam support for IDLE command ¦ ¦
¦ ¦ [ ] DRAC Build in DRAC support ¦ ¦
¦ ¦ [X] TRASHQUOTA Include deleted mails in the quota ¦ ¦
¦ ¦ [ ] GDBM Use gdbm db instead of system bdb ¦ ¦
¦ ¦ [ ] IPV6 Build with IPv6 support ¦ ¦
¦ ¦ [X] AUTH_LDAP LDAP support ¦ ¦
¦ ¦ [ ] AUTH_MYSQL MySQL support ¦ ¦
¦ ¦ [ ] AUTH_PGSQL PostgreSQL support ¦ ¦
¦ ¦ [ ] AUTH_USERDB Userdb support ¦ ¦
¦ ¦ [ ] AUTH_VCHKPW Vpopmail/vchkpw support ¦ ¦
+-L------------------------------------------------------------------+
¦ [ OK ] Cancel ¦
L---------------------------------------------------------------------
mail@/usr/ports/mail/courier-imap> make install clean
... skipped ...
mail@/usr/ports/mail/courier-imap>
| Создаем конфиг для скрипта создания сертефиката
mail@/> cp /usr/local/etc/courier-imap/pop3d.cnf.dist \
? /usr/local/etc/courier-imap/pop3d.cnf
| /usr/local/etc/courier-imap/pop3d.cnf:
RANDFILE = /dev/random
[ req ]
default_bits = 2048
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no
[ req_dn ]
C=RU
ST=NA
L=Moscow
O=Mail Server
OU=SSL Key
CN=mail.teachers
emailAddress=root@mail.teachers
[ cert_type ]
nsCertType = server
| Ну и создаем сам сертефикат:
mail@/> cd /usr/local/share/courier-imap/
mail@/usr/local/share/courier-imap>
mail@/usr/local/share/courier-imap> ll
total 8
drwxr-xr-x 2 root wheel 512B 1 окт 21:38 .
drwxr-xr-x 33 root wheel 1,0K 30 окт 00:01 ..
-rwxr-xr-x 1 root wheel 1,4K 17 сен 17:03 mkimapdcert
-rwxr-xr-x 1 root wheel 1,4K 17 сен 17:03 mkpop3dcert
mail@/usr/local/share/courier-imap> ./mkpop3dcert
Generating a 2048 bit RSA private key
..............................+++
...........+++
writing new private key to '/usr/local/share/courier-imap/pop3d.pem'
-----
512 semi-random bytes loaded
Generating DH parameters, 512 bit long safe prime, generator 2
This is going to take a long time
....................+..................................+...
....+.......+..............................................
+..........................................................
......................+........+..........+.+..............
......+.........................................+.+...
.+........................+........+..........+
..................................................................
....+.......+...+.....................+......+.........+.....+..
.+........+..................................
....................+....+...............
..........................+................
.........................+.................
.......+......+...............++*++*++*++*++*++*
subject= /C=RU/ST=NA/L=Moscow/O=Mail Server/OU=SSL Key/
CN=mail.teachers/emailAddress=root@mail.teachers
notBefore=Nov 9 19:05:09 2006 GMT
notAfter=Nov 9 19:05:09 2007 GMT
MD5 Fingerprint=11:5C:84:6A:6B:9A:AB:B0:24:34:61:18:53:FE:CE:A4
mail@/usr/local/share/courier-imap>
| Теперь настраиваем imapd-ssl, /usr/local/etc/courier-imap/imapd-ssl, я ничего не менял, кроме:
# На каком адресе висим
SSLADDRESS=192.168.1.245
# Путь к сертефикату
TLS_CERTFILE=/usr/local/etc/ssl/pop3d.pem
# Maildir находится в home directory
MAILDIRPATH=.
| Теперь, можно запускать это все добро:
mail@/> echo courier_imap_imapd_ssl_enable=\"YES\" >> /etc/rc.conf
mail@/> /usr/local/etc/rc.d/courier-imap-imapd-ssl.sh start
Starting courier_imap_imapd_ssl.
mail@/> /usr/local/etc/rc.d/postfix.sh start
postfix/postfix-script: starting the Postfix mail system
mail@/>
| Усе, все запустилось, смотрим логи:
mail@/> tail -2 /var/log/maillog
Nov 9 23:13:23 mail postfix/postfix-script: starting the Postfix mail system
Nov 9 23:13:23 mail postfix/master[27388]: daemon started -- version 2.3.3,
configuration /usr/local/etc/postfix
mail@/>
| Теперь попробуем отправить почту пользователю fr33man@mail.teachers:
spider@/> cat /etc/passwd | mail -s 'test' fr33man@mail.teachers
| Смотрим логи:
mail@/> tail -0f /var/log/maillog
Nov 9 23:15:19 mail postfix/smtpd[27482]: connect from
spider.teachers[192.168.1.250]
Nov 9 23:15:19 mail postfix/smtpd[27482]: setting up TLS
connection from spider.teachers[192.168.1.250]
Nov 9 23:15:19 mail postfix/smtpd[27482]: TLS connection
established from
spider.teachers[192.168.1.250]: TLSv1 with cipher
DHE-RSA-AES256-SHA (256/256 bits)
Nov 9 23:15:20 mail postfix/smtpd[27482]: 03173CF02D:
client=spider.teachers[192.168.1.250]
Nov 9 23:15:20 mail postfix/cleanup[27487]: 03173CF02D:
message-id=<200611092015.kA9KFU2p050904@spider.teachers>
Nov 9 23:15:20 mail postfix/qmgr[27390]: 03173CF02D:
from=<fr33man@spider.teachers>, size=2327, nrcpt=1 (queue active)
Nov 9 23:15:20 mail postfix/smtpd[27482]: disconnect
from spider.teachers[192.168.1.250]
Nov 9 23:15:20 mail postfix/virtual[27488]: 03173CF02D:
to=<fr33man@mail.teachers>, relay=virtual,
delay=0.32, delays=0.2/0.06/0/0.07, dsn=2.0.0,
status=sent (delivered to maildir)
Nov 9 23:15:20 mail postfix/qmgr[27390]: 03173CF02D:
removed
^C
mail@/>
| Отправлено, это хорошо. Теперь попробуем принять почту:
mail@/> tail -0f /var/log/maillog
Nov 9 23:16:52 mail authdaemond: Authenticated:
sysusername=<null>, sysuserid=1981, sysgroupid=1981,
homedir=/var/spool/mail/fr33man/, address=fr33man,
fullname=fr33man, maildir=<null>, quota=10485760, options=<null>
Nov 9 23:16:52 mail authdaemond: Authenticated: clearpasswd=xa)),
passwd={SSHA}SdlcxiAqmSIBXiyBSFXf7WYsdbyhEfT1
Nov 9 23:16:52 mail imapd-ssl: LOGIN, user=fr33man,
ip=[192.168.1.197], protocol=IMAP
^C
mail@/>
| Усе работает. Кстати, квоты тоже работают. Сейчас пытаюсь прикрутить maildrop в качестве транспорта. Так что скоро ждите новой статьи. ))
Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?t=17503.
размещено: 2006-11-09,
последнее обновление: 2007-01-31,
автор: fr33man
|
|
|
|
2014-07-27, lissyara
gmirror
Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9
Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту
Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis
Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS
Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT
В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat
Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp
Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration
Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster
HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS
История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire
Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
2011-01-28, Капитан
Температура в серверной
Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
2011-01-21, m4rkell
Syslog server
Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
2011-01-07, lissyara
Canon/gphotofs
Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
2010-12-13, Al
IPSec
Описание принципов работы IPSEC и способов аутентификации.
2010-12-07, manefesto
FreeBSD on flash
Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =)
2010-12-05, Fomalhaut
root ZFS, GPT
Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
2010-09-05, Cancer
Настройка аудиоплеера на ximp3
Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
2010-08-31, Cancer
Установка и настройка OpenVPN
На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
2010-08-25, manefesto
freebsd lvm
Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
2010-04-30, gonzo111
proftpd file auth"a
Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
2010-04-22, lissyara
tw_cli
Пошаговая инструкция по восстановлению RAID на контроллере 3ware, из которого выпал один диск. Настройка мониторинга состояния рейда и отчётов о его состоянии на email.
2010-04-14, fox
MySQL Master+Master
MySQL (Master Master) and (Master Slave) Как настроить репликацию…
2010-03-09, terminus
DNS zones
Краткий ликбез про управление DNS зонами. Примеры проведения делегирования прямых и обратных DNS зон.
2010-03-09, aspera
Squid+AD (group access)
Настройка прокси сервера SQUID с автроризацией пользователей в AD. Разделение пользователей на группы
2010-03-02, BlackCat
Шлюз: Часть 4
Настройка дополнительных сервисов: синхронизация времени (OpenNTPD), клиент DynDNS.org.
2010-03-01, BlackCat
Шлюз: Часть 3
Настройка DHCP и DNS серверов для работы внутри частной сети, c поддержкой внутренних (частных зон) DNS, а так же интеграция DHCP и DNS сервисов.
2010-03-01, BlackCat
Шлюз: Часть 2
Конфигурация МСЭ pf для проброса портов с изменением порта назначения и без, а так же поддержки активного режима FTP и ограничения максимального размера сегмента
2010-03-01, BlackCat
Шлюз: Часть 1
Быстрая настройка шлюза/маршрутизатора с установлением PPPoE-соединения, поддержкой NAT и DNS-forwarding.
2010-02-23, Morty
darkstat
Простая считалка траффика, со встроенным веб-сервером. Очень маленькая, может делать отчеты трафика по хостам, портам, протоколам, а также строить графики
2010-01-23, gonzo111
squid+sams+sqstat
Пилим squid и sams - примеры конфигов с объяснениями. Установка SqStat.
2009-12-19, schizoid
mpd5 + radius + ng_car + Abills
Настройка pppoe-сервера с биллинговой системой Abills и шейпером ng_car
2009-11-16, lissyara
UFS->ZFS
Удалённая миграция с UFS на ZFS. Загрузка с раздела zfs. Настройка для работы с малым количеством памяти под архитектурой i386.
2009-11-13, gx_ua
fusefs-ntfs
Установка, настройка и использование fusefs-ntfs, драйвер NTFS, предназанченного для монтирования NTFS разделов под FreeBSD
2009-11-12, Morty
LiveCD
Создание собственного LiveCD с необходимыми вам изменениями, автоматизирование данного процесса, а так же вариант скоростной сборки СД.
2009-09-27, lissyara
Samba как PDC
Контроллер домена - аналог M$ NT4 домена под самбой, без использования LDAP и прочей хиромантии. Просто и быстро =)
2009-08-30, terminus
ipfw nat
Подробное руководство по ipfw nat, сложные случаи конфигурации.
2009-08-24, levantuev
HotSpot
Установка Hotspot системы в общественное заведение.
2009-08-18, lissyara
diskless
Создание бездисковых терминалов под управлением FreeBSD - с загрузкой по сети. Используются для старта rdesktop и подключения к виндовому серверу терминалов.
2009-07-29, BAV_Lug
Видеонаблюдение
Настройка бюджетного варианта видеонаблюдения на удаленном объекте
2009-07-22, Cancer
OpenLDAP адресная книга
Настройка и создание адресной книги на базе OpenLDAP + phpLDAPadmin
2009-06-30, SergeySL
AimSniff
Руководство по созданию системы мониторинга ICQ-переписки на базе AimSniff, использующей базу данных MySQL для хранения и Web-интерфейс WAS (Web Aim Sniff) для просмотра перехваченных сообщений
2009-06-25, atrium
Управление правами доступа
Полномочия пользователей и файлов, принадлежащих им, формирует концепцию ОС UNIX.
2009-06-16, DNK
Exim+PgSQL
Установка почтовой системы exim+pgsql на FreeBSD 7.1
2009-05-30, mvalery
HDD(mbr) -> HDD(gpt)
Как разбить диск размером более 2TB на разделы, сделать загрузочным, а затем перенести на него информацию с рабочей системы — донора.
2009-05-22, Cancer
SendXMPP
Отправка сообщений на Джаббер сервер по средствам SendXMPP
2009-05-11, Raven2000
Network UPS Tools
Network UPS Tools представляет собой набор программ, которые обеспечивают общий
интерфейс для мониторинга и администрирование UPS оборудования.
2009-04-29, m0ps
IPSEC over GRE with RIP
Пример IPSEC over GRE и динамическим роутингом (RIP), с ADSL в качестве последней мили на оборудовании Cisco.
2009-04-24, WhiteBear777
qemu network
Появилась необходимость поставить на БСД эмулятор(qemu) и настроить в качестве гостевой ОС Windows XP, предоставив ей выход в локалку и в сеть internet...
2009-04-22, vp
freebsd + huawei 162 gsm modem
В статье описывается простой способ подключения модема huawei 162 к freebsd + первичная настройка smstools
2009-04-12, mvalery
Мониторинг RAID
Мониторинг из командной строки RAID компаний AMCC 3ware, HighPoint, Dell (Perc 5/i и PERC 6/i) и LSI (MegaRAID SAS 8408E и SAS1078)
2009-04-09, texnotronic
RAID1 via LAN
Функциональности DRBD во FreeBSD можно добиться примонтировав блочное устройство по сети при помощи GEOM Gate (ggate) и добавив его в зеркало с локальным диском средствами gmirror.
2009-04-03, Raven2000
Оптимизация хоста для CMS
В последнее время на старый и не очень быстрый ПК (Celeron 800 RAM 256) мною было навешано с десяток сайтов и некоторые были из серии тяжелых CMS. И так нам дано FreeBSD 7.1 и ~10 сайтов/CMS.
2009-04-01, atrium
VSFTPD + AD && MySQL
Настройка самого безопасного сервера FTP - vsftpd.
2009-03-31, Dron
Peoplenet + C-motech (3G)
Описание подключения к сети Peoplenet посредством 3G модема С-motech CCu-650U на FreeBSD
2009-03-25, lissyara
mod_auth_external
mod_auth_external - авторизация пользователей в apache c помощью внешней программы - например, системных пользователей.
2009-03-24, gx_ua
Lightsquid
Частично lightsquid может заменить sams: быстрая и простая инсталляция, быстрый парсер, cgi скрипт для динамической генерации отчета, нет привязки к БД, различные графические отчеты, мультиязычный инт
2009-03-18, LHC
Установка Zabbix-1.6
Установка и первоначальная настройка системы мониторинга Zabbix (версия 1.6)
2009-03-16, Cancer
Принт-Сервер Samba+LPD & AD
Простейшая настройка Принт-Сервера на FreeBSD используя Samba+LPD & AD
2009-03-04, Mad_caterpillar
ipsec_vpnc
Настройка VPN IPSec концентратора на FreeBSD 6.2 для клиента cisco с использованием ipsec-tools и авторизацией в активной директории
2009-02-18, Andy
Free-SA
Программа анализирует log файлы Squid'а и формирует по ним отчет.
2009-02-02, Cancer
Openfire Jabber Server
Установка Jabber сервера на примере Openfire
2009-01-28, Cancer
mpd5 + сжатие и шифрование
Установка VPN сервера mpd5 + сжатие и шифрование
|
Комментарии пользователей [14 шт.]