Установка Интернет-сервера на Debian
Введение
Официальная подробная инструкция по установке находится на http://pillsm.com/?a=7539
Цель этой инструкции - получить полностью функциональный Интернет-сервер на ОС Debian.
| |
Функция |
ПО, описание |
|---|---|---|
| 1 |
Маршрутизатор | route. Маршрутизация между локальными и глобальными сетями |
| 2 |
Брандмауэр (файрвол) |
iptables |
| 3 |
Удалённое администрирование |
openssh |
| 4 |
FTP сервер |
vsftpd |
| 5 |
DNS сервер |
Bind (named) со своей зоной teo.mynetwork.ru |
| 6 |
СУБД | MySQL |
| 7 |
Web сервер | Apache + php4 + ssl + mysql |
| 8 |
Прокси сервер | Squid + квотирование трафика на день (любой период) и отчёт по использованию. Настраивать будем по статье Квотирование доступа в Интернет через Squid |
| 9 |
Почтовый сервер | Postfix - smtp сервер. + виртуальный домен Courier - pop3, imap сервер |
Для определённости условимся, что:
- Компьютер с двумя сетевыми картами. eth0 для локальную сети, а eth1 для внешней.
- Локальная сеть состоит из трёх подсетей: 10.0.0.0/24, 10.0.10.0/24, 10.0.20.0/24.
- В глобальной сети есть спул адресов 192.168.100.16/28, т.е. у нас 14 внешних адресов.
- После настройки и отладки сервера в тестовом режиме, переведём его в "боевой" по статье Изменение адреса и имени сервера.
- Будем использовать только собранные пакеты, не собирая ничего из исходников. Это даст нам возможность в будущем без опасений обновлять нашу ОС целиком командой:
# apt-get dist-upgrade
Установка Debian
Прежде чем устанавливать можно ознакомиться с дополнительной иформацией используя функциональные клавиши F1 - F10. Это будет просто необходимо, если вдруг Debian не захочет устанавливаться с установками по умолчанию.
Если на каком-то этапе установки инсталятор выдаст ошибку о невозможности выполнить такой-то шаг, то это ещё не значит, что дальше установка невозможна. Нажмите продолжить и появиться меню установки, вернувшись на один или несколько пунктов назад можно будет повторить настройку в более подробном виде.
- Основным сетевым интерфейсом выбираем тот, который будет смотреть в Интернет. Через него во время установки будут закачены обновления безопасности. Таким образом, основной интерфейс eth1. Мастер настройки в Debian 4 Etch настроит только основной интерфейс, а в Sarge предложит настроить все.
eth1:
IP-адрес: 192.168.100.18
Маска сети: 255.255.255.240
Шлюз: 192.168.100.17
eth0:
IP-адрес: 10.0.0.2
Маска сети: 255.255.255.0
Шлюз: [не указываем, т.к. этот интерфейс смотрит в локальную сеть]
Адреса серверов имён: 217.116.158.1 217.116.158.2 (выдаёт провайдер, но можно и другие)
(Чтобы изменить эти настройки после установки см. статью "Советы по Linux")
- Имя компьютера: teo
Имя домена: mynetwork.ru
- Разбиение жесткого диска. На ваш выбор, в зависимости от планируемых задач. Мы сделаем простую разбивку. Позволим Debian разбить диск, выбрав пункт "Использовать самое большое непрерывное свободное место", затем "Все файлы в одном разделе". Если на диске уже были установлены другие ОС в своих разделах, то Debian займёт неразмеченное место на диске, разбив его на 2 раздела: для подкачки (swap) и для всего остального (с точкой монтирования / и файловой системой ext3)
Создание программного RAID массива
Вариант с программным (софтовым) RAID1 - зеркалирование:
Пусть у нас есть 2 жёстких диска по 80Гб - sda, sdb
- Каждый диск разабьём на 3 раздела:
- 300Мб - загрузочный. Включаем метку "загрузочный"
- 2,4Гб - подкачка
- 77,3Гб - для данных
- Добавить каждый раздел в Linux RAID. В меню появляется пункт "Настройка програмного RAID"
- Записать данные на диск
- Создать по очереди 3 MD устройства (multidisk), создав таким образом зеркало для каждого раздела.
- Тип MD: RAID1
- Число активных разделов: 1, резервных: 1
- Выбор активных разделов: /dev/sda1 ( /dev/sda2, /dev/sda3 )
- Выбор резервных разделов: /dev/sdb1 ( /dev/sdb2, /dev/sdb3 )
- Повторить 4.1-4.4 для оставшихся двух разделов.
- Настраиваем разделы. Чтобы в будущем можно было легко изменять размер нашего основного раздела, используем LVM:
- RAID1 устройство #0 296 Mb - ext3, точка монтирования - /boot
- RAID1 устройство #1 2.4 Gb - Использовать как раздел подкачки
- RAID1 устройство #2 77.3 Gb - Физический том для LVM
- В меню появляется пункт "Настройка менеджера логических томов (LVM)"
- Создать группу томов. Название group_store
- Устройство для новой группы: /dev/md2
- Создать логический том. Выбрать группу group_store
- Название логического тома store1
- Размер максимальный
- Настраиваем созданный LVM. Использовать как ext3, точка монтирования - /
- lilo на md0 (dev/md/0)
Настройка сети
После окончания установки и перезагрузки настроим доступ к сети. Заходим пользователем root.
Сетевые интерфейсы настраиваются в файле /etc/network/interfaces
Добавим интерфейс eth0, если он не был настроен во время установки ОС. Добавляем маршруты между нашими подсетями, где 10.0.0.1 маршрутизатор между локальными подсетями. Эти маршруты будут автоматически добавляться и убираться в зависимости от подключения или отключения интерфейса. Также можно добавить уведомление об этих событиях в журнал /var/log/messages. Это нам обеспечат последние две строки в описаниях каждого интерфейса:
auto lo eth0 eth1
iface lo inet loopback
iface eth0 inet static
address 10.0.0.2
netmask 255.255.255.0
broadcast 255.255.255.255
up route add -net 10.0.10.0 netmask 255.255.255.0 gw 10.0.0.1 dev $IFACE
up route add -net 10.0.20.0 netmask 255.255.255.0 gw 10.0.0.1 dev $IFACE
up echo Interface $IFACE going up | /usr/bin/logger -t ifup
down echo Interface $IFACE going down | /usr/bin/logger -t ifdown
iface eth1 inet static
address 192.168.100.18
netmask 255.255.255.240
broadcast 217.116.144.31
gateway 192.168.100.17
up echo Interface $IFACE going up | /usr/bin/logger -t ifup
down echo Interface $IFACE going down | /usr/bin/logger -t ifdown
В качестве альтернативы можно управлять статическими маршрутами, добавляя команды в /etc/network/if-up.d и /etc/network/if-down.d, также в эти каталоги можно добавить любые командные файлы по управлению ПО, зависящего от интерфейсов, например vpn.
- Проверяем работоспособность сетевых настроек. Для этого пингуем адреса из сети локальной, внешней, и проверяем внешний DNS сервер пингуя какой-нибудь узел по имени (само сабой мы должны быть 100% уверены, что все эти ресурсы сейчас доступны):
# ping 10.0.0.35 PING 10.0.0.35 (10.0.0.35) 56(84) bytes of data. 64 bytes from 10.0.0.35: icmp_seq=1 ttl=128 time=0.171 ms # ping 213.180.204.8 PING 213.180.204.8 (213.180.204.8) 56(84) bytes of data. 64 bytes from 213.180.204.8: icmp_seq=1 ttl=57 time=63.6 ms # ping ya.ru PING ya.ru (213.180.204.8) 56(84) bytes of data. 64 bytes from ya.ru (213.180.204.8): icmp_seq=1 ttl=57 time=78.4 ms
Если пинги не проходят, то, может быть, проблема с сетевой картой.
Например, 3Com 3C905-TX не единожды себя компрометировала тем, что вроде бы работает и даже пингует сама себя, но в сеть через неё выходить не удавалось.
Обновление ОС
- Добавляем имеющиеся компакт диски в репозиторий:
# apt-cdrom add
- Доустанавливаем пакеты:
# apt-get install mc ssh tcpdump gcc-4.1
- Обновляем установленную ОС через Интернет (не обязательно, но желательно).
# apt-get update # apt-get dist-upgrade
Если нет прямого доступа в интернет, то можно обновиться через прокси сервер, экспортировав соответсвующую переменную для apt-get:
# export http_proxy=http://pillsm.com/?a=7539
!!! Не забываем создавать резервные копии всех оригинальных конфигурационных файлов (напр. переименовывая в *.old) !!!
!!! Все пакеты, которые собираем из исходников, собираем в домашнем каталоге, у меня /home/pavel/app/ !!!
Настройка firewall (брендмауэр). Iptables
- Включаем iptables при загрузке системы. Для этого добавляем его последней строчкой в /etc/modules:
ide-cd ide-disk ide-generic psmouse sd_mod iptables
- Делаем из компьютера маршрутизатор. Раньше для этого нужно было указать в файле /etc/network/options:
ip_forward=yes
В Debian 5 отказались от использования этого файла, поэтому я сделал по старинке универсальным способом - изменил в /proc/sys/net/ipv4/ip_forward 0 на 1:
# echo 1 > /proc/sys/net/ipv4/ip_forward
- На этом можно приступить к следующему шагу, а можно дать доступ к Интернету для наших пользователей из локальной сети и настроить другие ограничения и разрешения. Как это сделать читайте в спец. статье по iptables. Если будем добавлять правила для прямого доступа в Интернет, то после установки прокси-сервера нужно не забыть их убрать, иначе останется возможность попадать в Интернет в обход прокси.
Удалённое управление сервером
Удалённое управление можно осуществлять по нескольким протоколам как через графический интерфейс (VNC, RDP) так и через текстовый (SSH, Telnet). Текстовый, конечно, быстрее. Для каждого протокола в Линукс есть несколько реализаций серверов и клиентов.
Установим OpenSSH:
# apt-get install openssh-server openssh-client
Настройки находятся в /etc/ssh/sshd_config
Теперь можно заходить на сервер с рабочего места администратора по протоколу ssh, если из Windows, то можно использовать PuTTY (см статью "Терминальное подключение к серверу Linux с помощью ключей ssh без паролей"). Подключаемся пользователем pavel и меняем пользователя на root:
$ su -
Настройка FTP-сервера. vsftpd
Основная статья: vsftpd
Настройка DNS. Bind
Основная статья Bind
На этом шаге мы будем поднимать свой DNS сервер, если этого не требуется и достаточно внешнего, то этот шаг можно пропустить. Однако, если у нас не будет своего DNS, то нужно будет или попросить кого-нибудь (напр. провайдера) разместить у себя нашу зону teo.mynetwork.ru, или обратиться к любому хостеру за этой недорогой услугой.
Настройка СУБД. MySQL
- Устанавливаем MySQL сервер:
# apt-get install mysql-server
- После установки он автоматически запускается. Вручную это можно сделать выполнив:
# /etc/init.d/mysql start
- Можно посмотреть как он запустился в /var/log/syslog. Подсоединяемся к серверу:
# mysql -u root mysql
- Меняем пароль администратора и выходим
mysql> UPDATE user SET Password=PASSWORD('new_pass') WHERE user='root';
mysql> quit
- Перезагружаем сервер
# /etc/init.d/mysql reload
- Подсоединяемся к серверу ещё раз, только теперь с паролем
# mysql -u root -p mysql
Ознакомиться с коммандами и советами можно в специальной статье по MySQL.
Настройка Веб-сервера. Apache
- В будущем нам понадобиться поддержка php и perl скриптов. Эти модули должны быть установлены при установке ОС (если мы сказали устанавливать веб-сервер). Проверить что установлено вместе с Apache можно командой:
# dpkg -l *apache2*
А установить Apache c этими модулями можно командами:
# apt-get install apache2 # apt-get install libapache2-mod-perl2 # apt-get install libapache2-mod-php4
- Главный конфигурационный файл /etc/apache2/apache2.conf нам пока не понадобится. Нас интересуют 4 каталога в /etc/apache2/:
- mods-available - установленые в систему модули, хранит сами модули и их конфигурационные файлы
- mods-enabled - подключенные модули, хранит ссылки на файлы в mods-available
- sites-available - доступные сайты, хранит файлы описывающие виртуальные хосты
- sites-enabled - подключенные сайты, хранит ссылки на файлы в sites-available
и четыре команды, которыми будем создавать и удалять ссылки в диалоговом режиме:
- a2enmod - подключает модуль
- a2dismod - отключает модуль
- a2ensite - подключает сайт
- a2dissite - отключает сайт
после выполнения этих команд нужно попросить Apache обновить свою конфигурацию:
# /etc/init.d/apache2 reload
Также можно настроить несколько сайтов на одном веб-сервере. В этой же статье описано как изменить доступ к каталогам и файлам сайта.
- Переносим сайты со старого сервера (см. советы по MySQL)
Настройка прокси-сервера. Squid
Основная статья: Squid
Настройка почтового сервера
- В качестве комплексного решения можно использовать почтовый сервер Zimbra. Он устанавливается и настраивается с помощью встроенного инсталлятора (мастера установки). Так как Zimbra многое чего в системе настраивает для своих нужд и включает в себя много продуктов (среди прочего MySQL, Apache и Postfix), то ёё лучше ставить на отдельную ОС, либо ставить первой.
- Можно использовать отдельно Postfix и дополняющие его приложения.
Postfix
Postfix отвечает только за приём почты и раскладке его по нужным каталогам.
- Устанавливаем необходимые пакеты, также будет весьма полезно установить документацию:
# apt-get install postfix postfix-mysql postfix-doc
- Почту будем раскладывать по каталогам и забирать от туда пользователем postfix. Можно для этих целей добавить отдельного пользователя, например vmail и от его имение работать с каталогами и файлами почтовых ящиков. Узнаем какой у postfix номер пользователя (uid) и группы (gid) в ситсеме:
# id postfix uid=107(postfix) gid=108(postfix) groups=108(postfix)
- Вносим изменения в /etc/postfix/main.cf:
myhostname = teo.mynetwork.ru alias_maps = hash:/etc/postfix/aliases mydomain = teo.mynetwork.ru mynetworks = 10.0.0.0/24 10.0.10.0/24 10.0.20.0/24
В список mynetworks также можно добавить адреса доменов, которые воспринимаются как спамеры, но письма с них получать нужно. Делать это стоит только если не удалось настроить приложение отвечающее за борьбу со спамом. Переменную relayhost можно закоментировать или вообще убрать, так как мы будем использовать транспортную таблицу, которая перекрывает её.
- Добавляем в конец файла следующие строки конфигурации:
# устанавливаем ограничение на ящик в 100Мб и на письмо в 10Мб mailbox_size_limit = 102400000 message_size_limit = 10240000 # Создаём виртуальный домен, учитывая что uid=107(postfix) gid=108(postfix) vivirtual_mailbox_base = /var/spool/postfix/vmail virtual_mailbox_domains = mysql:/etc/postfix/virt_domain.cf virtual_alias_maps = mysql:/etc/postfix/virt_alias.cf virtual_mailbox_maps = mysql:/etc/postfix/virt_mailbox.cf transport_maps = mysql:/etc/postfix/transport.cf virtual_minimum_uid = 100 virtual_uid_maps = static:107 virtual_gid_maps = static:108 # Добавим небольшой фильтр от спама header_checks = regexp:/etc/postfix/header_checks # Различные ограничения, призванные помочь в борьбе со спамом smtpd_etrn_restrictions = permit_mynetworks, reject smtpd_helo_required = yes smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
- Создаём каталог, где будет храниться почта и изменяем владельца и права доступа:
# mkdir /var/spool/postfix/vmail # chown postfix.postfix /var/spool/postfix/vmail # chmod 700 /var/spool/postfix/vmail
- Создаём файл /etc/postfix/header_checks, в котором пропишем правило отсева сообщений в теме которых содержаться слова sex, viagra, seduce, naked:
/^Subject.*(sex|viagra|seduce|naked)/ FILTER REJECT:
- Создадим файлы доступа к MySQL. Пользователь postfixadmin в MySQL будет создан позже, при установке Postfix Admin. Создаём файл /etc/postfix/virt_alias.cf:
user = postfixadmin password = postfixadmin hosts = 127.0.0.1 dbname = postfix table = alias select_field = goto where_field = address
- Создаём файл /etc/postfix/virt_domain.cf:
user = postfixadmin password = postfixadmin hosts = 127.0.0.1 dbname = postfix table = domain select_field = description where_field = domain
- Создаём файл /etc/postfix/virt_mailbox.cf:
user = postfixadmin password = postfixadmin hosts = 127.0.0.1 dbname = postfix table = mailbox select_field = maildir where_field = username
- Создаём файл /etc/postfix/transport.cf:
user = postfixadmin password = postfixadmin hosts = 127.0.0.1 dbname = postfix table = transport select_field = destination where_field = domain
указывая в hosts IP адрес, мы принуждаем Postfix соединяться с MySQL через порт, если же указать localhost, то он будет стараться соединиться через сокет.
Подробней о настройке и отладке можно почитать в статье посвящённой отдельно Postfix.
PostfixAdmin
Устанавливаем Postfix Admin для настройки postfix через веб-интерфейс.
Доустановим пакет позволяющий PHP работать с MySQL:
# apt-get install php5-mysql
Автоматически подгружаем расширение PHP для MySQL. Для этого убираем комментарий в /etc/php4/apache2/php.ini:
extension=mysql.so
Берём последнюю версию пакета с http://pillsm.com/?a=7539 (на данный момент последняя версия 2.3.0). Распаковываем в кокой-нибудь каталог нашего административного сайта (например в postfixadmin) и запускаем установочный скрипт в браузере http://pillsm.com/?a=7539
Удобно, что сейчас весь труд по созданию и настройке базы данных разработчики взяли на себя. Проблемы с языком тоже нет.
- В PostfixAdmin добавляем домен teo.mynetwork.ru и почтовые ящики pm и p.
- Можно сделать резервную копию всех таблиц в виде SQL выражений. Для этого на странице администратора нажать кнопку Backup.
Проверяем работу Postfix
Теперь в консоли проверяем как работает доставка почты, т.е. smtp (учитывая требования MeTA1[1]):
# telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 teo.mynetwork.ru ESMTP Postfix helo teo.mynetwork.ru 250 teo.mynetwork.ru mail from:<pm@teo.mynetwork.ru> 250 Ok rcpt to:<p@teo.mynetwork.ru> 250 Ok data 354 End data with <CR><LF>.<CR><LF> this is the test . 250 Ok: queued as A7CAC36B52 quit 221 Bye Connection closed by foreign host.
- Идём в наш почтовый каталог /var/spool/postfix/vmail/ там, если не был, появился каталог p@teo.mynetwork.ru, а в нём (в каталоге new) сообщение.
Настраиваем шифрование. TLS
Если отказались от TLS, то пропускаем этот шаг.
- Конфигурируем Postfix. Добавляем настройки tls в конец файла /etc/postfix/main.cf:
# TLS tls_random_source = dev:/dev/urandom smtp_use_tls = yes smtp_tls_note_starttls_offer = yes smtp_tls_loglevel = 1 smtp_tls_key_file = /etc/apache2/ssl/server.key smtp_tls_cert_file = /etc/apache2/ssl/server.crt smtp_tls_CAfile = /etc/apache2/ssl/ca.crt smtpd_use_tls = yes smtpd_tls_auth_only = no smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s smtpd_tls_loglevel = 1 smtpd_tls_key_file = /etc/apache2/ssl/server.key smtpd_tls_cert_file = /etc/apache2/ssl/server.crt smtpd_tls_CAfile = /etc/apache2/ssl/ca.crt
Проверяем:
# postfix reload # telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 teo.mynetwork.ru ESMTP Postfix ehlo teo.mynetwork.ru 250-teo.mynetwork.ru 250-PIPELINING 250-SIZE 10240000 250-ETRN 250-STARTTLS 250 8BITMIME starttls 220 Ready to start TLS close Connection closed by foreign host.
- В случае сбоев смотреть лог-файлы /var/log/mail.err, mail.warn, mail.log
ClamAV
Мы установим из пакета, но можно скачать исходники с http://pillsm.com/?a=7539
Устанавливаем:
# apt-get install clamsmtp
- В конфигурационном меню выбираем:
Режим работы: "daemon", Ближайший сервер для обновлений, Прокси (если нужен), Нужно ли перегружать демон при обновлении баз: Yes, Удалять ли карантин при удалении всего пакета: Yes, Обновляем библиотеку: Yes, Перезагружаем сервисы
- Смотрим в файле /etc/clamsmtpd.conf какой порт clamsmtpd прослушивает (Listen) и на какой отдаёт обратотанную почту (OutAddress)
OutAddress: 10025 Listen: 127.0.0.1:10026
- Добавляем антивирусный фильтр в /etc/postfix/main.cf (я добавил после антиспам фильтра):
# anti-virus content_filter = scan:127.0.0.1:10026 receive_override_options = no_address_mappings
- Добавляем в конец файла /etc/postfix/master.cf:
# AV scan filter (used by content_filter)
scan unix - - n - 16 smtp
-o smtp_send_xforward_command=yes
# For injecting mail back into postfix from the filter
127.0.0.1:10025 inet n - n - 16 smtpd
-o content_filter=
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks_style=host
-o smtpd_authorized_xforward_hosts=127.0.0.0/8
- Запускаем:
# /etc/init.d/clamav-daemon start
Проверим, что демон действительно запущен и прослушивает порт 10026:
# netstat -apn | grep 10026 tcp 0 0 127.0.0.1:10026 0.0.0.0:* LISTEN 27910/clamsmtpd
На этом с Postfix всё. Можно ещё раз проверить с помощью telnet, что почта, проходя через антивирусную защиту, доходит в ящик пользователя.
Courier
Устанавливаем Courier-IMAP с поддержкой MySQL.
Сourier-IMAP отвечает за отдачу почты пользователю по протоколам IMAP и POP3.
Исходники можно взять с http://pillsm.com/?a=7539
Устанавливаем Courier
# apt-get install courier-imap courier-pop courier-authmysql courier-authdaemon
- Настраиваем демон авторизации, редактируя его конфигурационный файл /etc/courier/authdaemonrc:
authmodulelist="authmysql" daemons=10
- Настраиваем доступ к БД MySQL. Редактируем /etc/courier/authmysqlrc:
MYSQL_SERVER localhost #или 127.0.0.1, если не работает MYSQL_USERNAME postfixadmin MYSQL_PASSWORD postfixadmin #MYSQL_SOCKET /var/lib/mysql/mysql.sock MYSQL_PORT 3306 MYSQL_OPT 0 MYSQL_DATABASE postfix MYSQL_USER_TABLE mailbox MYSQL_CRYPT_PWFIELD password DEFAULT_DOMAIN teo.mynetwork.ru MYSQL_UID_FIELD '107' MYSQL_GID_FIELD '108' MYSQL_LOGIN_FIELD username MYSQL_HOME_FIELD '/var/spool/postfix/vmail' MYSQL_NAME_FIELD name MYSQL_MAILDIR_FIELD maildir
- Запускаем:
# /etc/init.d/courier-authdaemon start # /etc/init.d/courier-pop start # /etc/init.d/courier-imap start
- Проверяем можем ли забрать почту, т.е. работоспособность pop3:
# telnet localhost 110 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. +OK Hello there. user pm@teo.mynetwork.ru +OK Password required. pass password +OK logged in. list +OK POP3 clients that break here, they violate STD53. 1 470 . quit +OK Bye-bye. Connection closed by foreign host.
Как видим одно письмо на 470 байт лежит. Можно его просмотреть командой retr 1 (конечно перед quit)
Если telnet выдаёт ошибку "ERR chdir Maildir failed", то может помочь изменение переменной:
MYSQL_MAILDIR_FIELD concat('/var/spool/postfix/vmail/',maildir)
- Можно дополнительно указать, чтобы регистрировались все подключения пользователей. Это удобно, чтобы ответить на вопрос: "когда пользователь забрал почту?" для этого в файлах /etc/courier/pop3d, imapd указываем:
DEBUG_LOGIN=1
Если указать 2, то будут также показываться пароли, с которыми пользователи пытались подключиться.
Включаем шифрование
Устанавливаем Cyrus-SASL2 для шифрования отдаваемой почты.
# apt-get install libsasl2 cyrus-sasl2 libsasl2-plugin-sql
- Расскажем SASL, где и как искать пароли, когда к нему обратится postfix. Аутонтификацию будем проводит методом saslauthd. Для этого создадим файл /usr/lib/sasl2/smtpd.conf следующиго содержания:
pwcheck_method: saslauthd mech_list: PLAIN LOGIN
- Альтернативный метод - auxprop. Чтобы использовать его, нужно в /usr/lib/sasl2/smtpd.conf прописать:
auxprop_plugin: mysql
pwcheck_method: auxprop
mysql_user: postfixadmin
mysql_passwd: postfixadmin
mysql_hostnames: localhost
mysql_database: postfix
mysql_statement: select password from mailbox where username='%u@%r'
mysql_verbose: yes
Создаём сертификат
- Если в /var/lib/ssl/certs/ лежат файлы pop3d.pem и imapd.pem, то это и есть сертификаты и они уже созданы, чтобы пересоздать их со своими данными удалим эти файлы и отредактируем /etc/courier-imap/pop3d.cnf, где ST короткое (2-3 буквы) название города:
[ req_dn ] C=RU ST=MC L=My City O=teo Mail Server OU=Auto POP3 SSL key CN=teo.mynetwork.ru emailAddress=postmaster@teo.mynetwork.ru
и /etc/courier-imap/imapd.cnf:
[ req_dn ] C=RU ST=MC L=My City O=teo Mail Server OU=Auto POP3 SSL key CN=teo.mynetwork.ru emailAddress=postmaster@teo.mynetwork.ru
- Генерируем сертификаты:
# rm -f /var/lib/ssl/certs/pop3d.pem # rm -f /var/lib/ssl/certs/imapd.pem # /usr/share/courier-imap/mkpop3dcert # /usr/share/courier-imap/mkimapdcert
Полезная ссылка: Virtual Users and Domains with Courier-IMAP and MySQL
- Теперь наша почтовая система установлена окончательно. А вместе с этим последним шагом мы закончили настраивать и весь Интернет-сервер. Пришло время время вводить его в эксплуатацию.
Введение сервера в "боевой" режим
Если мы устанавливали и отлаживали свой сервер, как часто бывает, в тестовом режиме, параллельно с работающим старым сервером, то перед установкой сервера в "боевой" режим нужно внести некоторые изменения.
Система
- Изменить настройки сетевых интерфейсов на боевые (ip адрес, маска, шлюз, DNS).
- Прописать реальные имена в /etc/hosts.
Приложения
- Squid. Внести изменения в конфигурационный файл /etc/squid3/squid.conf, чтобы прокси сервер принимал запросы только из локальной сети и компьютера, где установлен:
http_port 10.0.0.2:3128 http_port 127.0.0.1:3128
- SAMS. Исправить IP адрес на административной странице "SAMS" - "Администрирование SAMS"
- Postfix. Исправить IP адреса в параметре mynetworks в файле /etc/postfix/main.cf
- Courier. Если менялось имя почтового домена, то исправить в /etc/courier-authlib/authdaemon-mysql.conf и пересоздать сертификаты.
- Apache. Исправить директивы NameVirtualHost и VirtualHost в конфигурациях виртуальных хостов (если создавались).
Сноски
- ↑ Цитата с сайта журнала Системный Администратор:
Нужно заметить, что MeTA1 более строго относится к стандартам. Например, во время SMTP-сеанса такой вольности, как «mail from: user@server.ru» он не допустит, ругнувшись про «501 5.1.7 Bad sender’s mailbox address syntax». Адрес должен непременно быть в виде <user@server.ru>, причём пробел между двоеточием и открывающей угловой скобкой не допускается.