Установка Интернет-сервера на Debian

Материал из SysadminWiki.ru
Перейти к: навигация, поиск

Содержание

Введение

Официальная подробная инструкция по установке находится на 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 сервер.

+ виртуальный домен
+ MySQL - база данный пользователей
+ Postfix Admin - управление ящиками
+ TLS - шифрация трафика
+ ClamAV - проверка почты на вирусы

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

  1. Каждый диск разабьём на 3 раздела:
    300Мб - загрузочный. Включаем метку "загрузочный"
    2,4Гб - подкачка
    77,3Гб - для данных
  2. Добавить каждый раздел в Linux RAID. В меню появляется пункт "Настройка програмного RAID"
  3. Записать данные на диск
  4. Создать по очереди 3 MD устройства (multidisk), создав таким образом зеркало для каждого раздела.
    1. Тип MD: RAID1
    2. Число активных разделов: 1, резервных: 1
    3. Выбор активных разделов: /dev/sda1 ( /dev/sda2, /dev/sda3 )
    4. Выбор резервных разделов: /dev/sdb1 ( /dev/sdb2, /dev/sdb3 )
    5. Повторить 4.1-4.4 для оставшихся двух разделов.
  5. Настраиваем разделы. Чтобы в будущем можно было легко изменять размер нашего основного раздела, используем LVM:
    RAID1 устройство #0 296 Mb - ext3, точка монтирования - /boot
    RAID1 устройство #1 2.4 Gb - Использовать как раздел подкачки
    RAID1 устройство #2 77.3 Gb - Физический том для LVM
  6. В меню появляется пункт "Настройка менеджера логических томов (LVM)"
    1. Создать группу томов. Название group_store
    2. Устройство для новой группы: /dev/md2
    3. Создать логический том. Выбрать группу group_store
    4. Название логического тома store1
    5. Размер максимальный
  7. Настраиваем созданный LVM. Использовать как ext3, точка монтирования - /
  8. 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 в конфигурациях виртуальных хостов (если создавались).

Сноски


  1. Цитата с сайта журнала Системный Администратор:
    Нужно заметить, что MeTA1 более строго относится к стандартам. Например, во время SMTP-сеанса такой вольности, как «mail from: user@server.ru» он не допустит, ругнувшись про «501 5.1.7 Bad sender’s mailbox address syntax». Адрес должен непременно быть в виде <user@server.ru>, причём пробел между двоеточием и открывающей угловой скобкой не допускается.
Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Популярное
Инструменты