Пятница, 17.05.2024, 13:32

ОКНА ДВЕРИ ЖАЛЮЗИ РОЛЛЕТЫ НЕЖИН

Главная » 2010 » Май » 20 » Приручение почтового голубя
Приручение почтового голубя
00:54
Приручение почтового голубя Сергей «grinder» Яремчук Хакер, выпуск #104, стр. 134 (grinder@ua.fm) Postfix + Dovecot + MySQL: строим надежный почтовый сервер Электронная почта появилась и стала популярной задолго до появления интернета, и сегодня без нее уже просто невозможно представить современный мир. Это очень быстрый и, главное, простой в использовании способ передачи информации, понятный даже новичку. Но вот настроить систему отправки и приема сообщений не так просто, как это может показаться на первый взгляд. От администратора требуется мобилизовать весь свой опыт, чтобы создать надежную, безопасную и удобную почтовую систему. В статье показан только один из возможных вариантов решения этой задачи. Устанавливаем Postfix + Dovecot Для нашего почтового сервера выберем связку Postfix (www.postfix.org) и Dovecot (www.dovecot.org). Postfix является одним из самых популярных MTA (Mail Transfer Agent), имеет модульную структуру, обеспечивающую гибкость в настройках и легкость в работе. О безопасности Postfix не говорил только ленивый. В качестве сервера, который будет доставлять почту по требованию почтовых клиентов, используем Dovecot. Он достаточно прост в настройке, к тому же изначально рассчитан на максимальную безопасность и надежность. Для поиска в больших файлах применяется бинарный древовидный индекс, поэтому голубятня быстро работает даже при больших нагрузках. Dovecot может обслуживать запросы пользователей с помощью протоколов imap, imaps, pop3, pop3s. Еще один плюс этой связки: пользователи Postfix 2.3+ и Exim 4.64+ при отправке сообщения могут быть аутентифицированы непосредственно с помощью средств Dovecot (в частности SASL - Simple Authentication and Security Layer) без привлечения дополнительных библиотек вроде Cyrus SASL. Это, естественно, упрощает настройку и повышает общую надежность всей системы. Ориентироваться будем на Ubuntu 7.04, но практически все, за исключением команд установки пакетов, будет действительно и для остальных дистрибутивов. Советую не навешивать сразу дополнительную функциональность на эти сервисы, я имею в виду проверку на спам и вирусы, работу с БД и прочее. Если в настройки закрадется ошибка, найти ее будет на порядок сложнее. Лучше фиксировать настройки на некотором этапе и, убедившись в работоспособности, добавлять следующую функциональность. Итак, с помощью sudo apt-cache search postfix и sudo apt-cache search dovecot ищем нужные пакеты и ставим: $ sudo apt-get install dovecot-common dovecot-imapd dovecot-pop3d postfix-mysql В процессе установки будут добавлены системные пользователи postfix и dovecot, группы postfix, postdrop, а также созданы все необходимые каталоги. Кроме этого, пользователь dovecot будет добавлен в группу mail. Я выбрал два пакета: dovecot-imapd и dovecot-pop3d. В каждом находятся модули, обеспечивающие доступ по соответствующему протоколу. Если какой-либо из них не нужен, пакет можно не ставить. Смотрим, какие модули доступны для Postfix: $ postconf -a cyrus dovecot Требуемый модуль для работы с dovecot в списке есть, поэтому нет необходимости в пересборке Postfix. Но для тех, кто все-таки захочет самостоятельно собрать оба сервера (например, чтобы использовать самую последнюю версию), советую сначала установить пакеты для удовлетворения зависимостей: $ sudo apt-get build-dep postfix-mysql dovecot-common dovecot-imapd dovecot-pop3d Компиляция Postfix и Dovecot стандартны, все нужное, как правило, устанавливается по умолчанию, только при сборке Postfix необходимо использовать команду: $ make makefiles CCARGS='-DUSE_SASL_AUTH -DDEF_SERVER_SASL_TYPE=\"dovecot\"' Вот, собственно, и все премудрости. Конфигурационный файл Postfix По ходу установки через репозитарий пакетов в Ubuntu будут задаваться некоторые вопросы по архитектуре будущей почтовой системы (доставка почты напрямую, локальная доставка, смарт-хост), кроме того, некоторые параметры будут взяты из настроек системы. Поэтому после установки Postfix практически на 99% готов к работе. Основной конфигурационный файл называется /etc/postfix/main.cf: $ sudo mcedit /etc/postfix/main.cf # Имя, домен и псевдонимы почтового узла myhostname = grinder.com mydomain = grinder.com alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = $myhostname # Список доменов, через которые будет осуществляться локальная доставка mydestination = $myhostname, localhost.$mydomain, localhost # Список сетей, которым разрешен relay; слушаем на всех интерфейсах mynetworks = 127.0.0.0/8, 192.168.1.0/24 inet_interfaces = all # Баннер, выдаваемый при подключении smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) biff = no # Снимаем комментарий, если хотим снять ограничение на размер ящика (по умолчанию 51200000 байт) # mailbox_size_limit = 0 recipient_delimiter = + # Формат почтового ящика, возможен вариант Mailbox home_mailbox = Maildir/ # Каталоги для хранения почты и очереди Postfix mail_spool_directory = /var/mail queue_directory = /var/spool/postfix # Генерация сообщения о задержке почты delay_warning_time = 4h # TLS-настройки 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:${queue_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache # Настройки SASL smtpd_sasl_auth_enable = yes smtpd_sasl_authenticated_header = yes smtpd_sasl_local_domain = $myhostname # Файл-сокет для обмена информацией с Dovecot; # путь указывается относительно queue_directory smtpd_sasl_path = private/auth smtpd_sasl_security_options = noanonymous # Используем тип dovecot smtpd_sasl_type = dovecot Просмотреть значения всех параметров можно, введя команду postconf. В каталоге /usr/share/postfix лежит несколько шаблонов, в main.cf.dist представлены практически все основные настройки. При установке сервера создаются необходимые SSL-ключи и сертификаты, следует лишь проверить их наличие. По окончании настроек перезапускаем Postfix: $ sudo /etc/init.d/postfix restart И пробуем подключиться телнетом к 25-му порту. Если сервер ответил должным образом, переходим к настройке Dovecot. Конфигурационный файл Dovecot Все настройки Dovecot производятся в одном файле /etc/dovecot/dovecot.conf. Файл большой, его вывод занимает несколько экранов. Спасает то, что он хорошо комментирован и разбит на секции. Хотя большинство настроек также можно оставить в значении по умолчанию (то есть закомментированными). $ sudo mcedit /etc/dovecot/dovecot.conf # Каталог для хранения временных файлов base_dir = /var/run/dovecot/ # Протоколы, которые будем использовать; я включил все, но лишние можно убрать; # если dovecot используется для аутентификации, а не для доставки почты, выставляем none protocols = pop3 pop3s imap imaps # Отключение команды LOGIN, соединения принимаются только через SSL/TLS #disable_plaintext_auth = yes # Перед выключением Dovecot master process останавливаем все IMAP- и POP3-процессы #shutdown_clients = yes # Время в журнале в формате strftime(3) log_timestamp = "%Y-%m-%d %H:%M:%S " login_log_format_elements = user=<%u> method=%m rip=%r lip=%l %c syslog_facility = mail # IP-адрес, с которого будут приниматься SSL-соединения (по умолчанию все) #ssl_listen = # Отключение поддержки SSL/TLS #ssl_disable = no # Ключи и сертификаты ssl_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem ssl_key_file = /etc/ssl/private/ssl-cert-snakeoil.key # Пароль для доступа к файлу ключей и файл с сертификатом CA SSL (если требуются) #ssl_key_password = #ssl_ca_file = # Учетная запись, используемая при регистрации login_user = dovecot # Расположение почтовых ящиков пользователей (ранее default_mail_env setting) # По умолчанию параметр пустой, и Dovecot пробует ящики самостоятельно. mail_location = maildir:/var/mail/%u/Maildir:INDEX=/var/mail/%u # Группы, позволяющие получить доступ к каталогам почтовых ящиков mail_extra_groups = mail # Полный доступ в пределах почтового ящика mail_full_filesystem_access = no # Первый разрешенный UID, для того чтобы пользователи не могли регистрироваться как демоны или системные пользователи first_valid_uid = 500 #last_valid_uid = 0 # Маска для вновь создаваемых файлов umask = 0077 # Механизмы SASL-аутентификации auth default { # возможны варианты: plain login digest-md5 cram-md5 ntlm rpa apop anonymous gssapi mechanisms = plain login # эта строка специфическая для взаимодействия с Postfix socket listen { client { path = /var/spool/postfix/private/auth mode = 0660 user = postfix group = postfix } } # Для начала настроим систему на работу с локальными пользователями, занесенными в /etc/passwd passdb passwd { } userdb passwd { } Перезапускаем Dovecot: $ sudo /etc/init.d/dovecot restart Для проверки работы системы можно использовать telnet, но пароль в открытом виде воспринят не будет, поэтому нам понадобится Perl-модуль MIME-Base64: $ tar xzvf MIME-Base64-3.07.tar.gz $ cd MIME-Base64-3.07 $ perl Makefile.PL $ make $ make test Если все тесты прошли нормально, устанавливаем: $ sudo make install Теперь нужно получить перекодированную строку, в качестве параметра вводим два раза логин и один раз пароль: $ perl -MMIME::Base64 -e 'print encode_base64("grinder\0grinder\0password");' Z3JpbmRlcgBncmluZGVyAHBhc3N3b3Jk Соединяемся с сервером: $ telnet localhost 25 ... 250-AUTH PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN Вводим полученную ранее строку: AUTH PLAIN Z3JpbmRlcgBncmluZGVyAHBhc3N3b3Jk 235 2.0.0 Authentication successful QUIT 221 2.0.0 Bye Система аутентификации при отправке сообщения работает нормально. Для проверки всего цикла настраиваем почтовый клиент (POP3 - порт 110, POP3/SSL – 995, IMAP – 143 и IMAP/SSL – 993) и пробуем отправить и получить почту. Параллельно для анализа журналов в консоли вводим tail -f /var/log/mail.log. В итоге мы получили простую в администрировании и безопасную почтовую систему, которая подойдет для небольших организаций. Достаточно добавить нового пользователя командой adduser, и он может отправлять и получать почту с нового сервера. В организациях с большим числом пользователей такая схема работы будет неудобна. И систему следует наращивать дальше. Для примера добавим Postfix Admin, а учетные записи пользователей перенесем в базу данных. Прикручиваем Postfix Admin Для начала следует убедиться, что Postfix собран с поддержкой нужной БД: $ postconf -m | grep mysql mysql Все нормально. Устанавливаем Apache, MySQL и необходимые модули: $ sudo apt-get install mysql-server mysql-client apache2.2-common php5-mysql Сайт проекта Postfix Admin находится по адресу sf.net/projects/postfixadmin, забираем последнюю версию и устанавливаем: $ tar xvzf postfixadmin-2.1.0.tgz $ cd ./postfixadmin-2.1.0 Внутри каталога находится файл с описанием параметров доступа к БД, вводим sudo mcedit DATABASE_MYSQL.TXT и редактируем все необходимое в секциях Postfix user & password и Postfix Admin user & password. По окончании устанавливаем новую базу данных: $ mysql -u root -p < DATABASE_MYSQL.TXT Далее следует скопировать все файлы в корневой каталог веб-сервера, в Ubuntu это /var/www: $ cd .. $ sudo cp -r postfixadmin-2.1.0 /var/www $ sudo mv /var/www/postfixadmin-2.1.0 /var/www/postfixadmin Патчим Postfix Admin: $ wget –c http://troels.arvin.dk/db/postfixadmin/postfixadmin-2.1.0-arvin-martin.patch $ sudo cat postfixadmin-2.1.0-arvin-martin.patch | patch -p1 Переименовываем шаблон конфигурационного файла: $ cd /var/www/postfixadmin $ sudo mv config.inc.php.sample config.inc.php И правим: $ sudo mcedit config.inc.php # Меняем все строки «change-this-to-your.domain.tld» на имя своего узла; # проверяем параметры доступа к БД и правим следующие переменные: $CONF['domain_path'] = 'YES'; $CONF['domain_in_mailbox'] = 'NO'; $CONF['encrypt'] = 'cleartext'; Смотрим, под какой учетной записью работает веб-сервер, и устанавливаем соответствующие права доступа к каталогу: $ cat /etc/apache2/apache2.conf | grep User User www-data $ sudo chown -R www-data:www-data /var/www/postfixadmin $ sudo chmod -R 700 postfixadmin Если в Ubuntu сейчас попробовать зайти через браузер по адресу http://localhost/postfixadmin, веб-сервер выдаст запрос на поиск программы для открытия PHTML-файла. Поэтому в конфигурационный файл веб-сервера добавим пару строк: $ sudo mcedit /etc/apache2/apache2.conf ... AddType application/x-httpd-php .php .phtml AddHandler cgi-script .pl ... Теперь перезапускаем веб-сервер и пробуем зайти на нужную страницу. Для того чтобы проверить установки, следует нажать на Setup. Будет произведен поиск всех компонентов, особое внимание обращаем на наличие ошибок (Error), означающее отсутствие нужного компонента. По окончании настроек рекомендуется удалить setup.php и создать файл .htpasswd в каталоге /var/www/postfixadmin/admin. Прикручиваем MySQL к Postfix и Dovecot Теперь нужно сказать Postfix и Dovecot, чтобы они работали с MySQL. Сначала добавляем следующие строки в Postfix'овый main.cf: $ sudo mcedit /etc/postfix/main.cf virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf virtual_gid_maps = static:506 virtual_mailbox_base = /var/mail virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf virtual_minimum_uid = 506 virtual_transport = virtual virtual_uid_maps = static:506 broken_sasl_auth_clients = yes smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unauth_destination, reject_unauth_pipelining, reject_invalid_hostname И создаем новые файлы с именами, указанными в main.cf: $ sudo mcedit /etc/postfix/mysql_virtual_alias_maps.cf user = postfix password = postfix hosts = localhost dbname = postfix table = alias select_field = goto where_field = address $ sudo mcedit /etc/postfix/mysql_virtual_domains_maps.cf user = postfix password = postfix hosts = localhost dbname = postfix table = domain select_field = domain where_field = domain additional_conditions = and backupmx = '0' and active = '1' $ sudo mcedit /etc/postfix/mysql_virtual_mailbox_maps.cf user = postfix password = postfix hosts = localhost dbname = postfix table = mailbox select_field = maildir where_field = username Переходим к настройке Dovecot. В каталоге /etc/dovecot лежит шаблон dovecot-sql.conf, в котором описывается подключение к базе данных: $ sudo mcedit /etc/dovecot/dovecot-sql.conf driver = mysql connect = host=localhost dbname=postfix user=postfix password=postfix default_pass_scheme = PLAIN password_query = SELECT password FROM mailbox WHERE username = '%u' user_query = SELECT maildir, 125 AS uid, 125 AS gid FROM mailbox WHERE username = '%u' В последнем запросе цифра 125 соответствует UID/GID пользователя postfix. В другой системе она может отличаться, поэтому стоит проверить: grep postfix /etc/{passwd,group}. Теперь укажем на этот файл в dovecot.conf: $ sudo mcedit /etc/dovecot/dovecot.conf passdb sql { args = /etc/dovecot/dovecot-sql.conf } userdb sql{ args = /etc/dovecot/dovecot-sql.conf } Перезапускаем Apache, Postfix и Dovecot, заходим на Postfix Admin, создаем пользователей и работаем. В дальнейшем к этой системе можно добавить фильтры проверки на спам и антивирус. INFO Автор Dovecot Тимо Сираинен шел к первому релизу (13 апреля 2007 года) целых 5 лет. Он настолько помешан на безопасности, что готов отдать 1000 евро тому, кто первым найдет уязвимость в его сервере. Содержание
Категория: СТАТЬИ О РАЗНОМ | Просмотров: 583 | Добавил: муслшн | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Категории раздела
ДВЕРИ [16]
ДВЕРИ
ВИДЕО [122]
ВИДЕО
ПРОГРАММЫ [92]
ПРОГРАММЫ
ОКНА [116]
ОКНА
РОЛЛЕТЫ [22]
РОЛЛЕТЫ
ИГРЫ [12]
ИГРЫ
СТАТЬИ О РАЗНОМ [156]
СТАТЬИ О РАЗНОМ
МУЗЫКА [15]
МУЗЫКА
ТРЕЙЛЕРЫ [16]
ТРЕЙЛЕРЫ
YouTube РАЗНОЕ [11]
YouTube РАЗНОЕ
ЖАЛЮЗИ [22]
ЖАЛЮЗИ
ВОРОТА [18]
ВОРОТА
Москитные сетки [20]
Москитные сетки
РЕМОНТ [136]
РЕМОНТ
Поиск
ОКНА.ua - пластиковые окна киев, объявления, каталог, прайсы ОКНА.ua - пластиковые окна,объявления, каталог, прайсы
Календарь
«  Май 2010  »
ПнВтСрЧтПтСбВс
     12
3456789
10111213141516
17181920212223
24252627282930
31
Архив записей
Наш опрос
Оцените мой сайт
Всего ответов: 94
Мини-чат
200
Друзья сайта
  • Дешёвые стройматериалы
  • СКАНДИНАВСКИЕ АУКЦИОНЫ
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • бесплатный счетчик
    счетчик бесплатно