Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Павел Семенец
Кто из нас не мечтал создать свою мультидоменную почтовую систему, которая работала бы стабильно, надежно и безопасно, предлагала множество удобных функций, защищала от вирусов и спама, умела авторизовывать пользователей, шифровать передаваемый трафик, и в то же время была проста в обслуживании. Это особенно актуально для почтовых систем больших компаний или провайдерских серверов, предоставляющих почтовые сервисы внешним клиентам. Как добиться такого результата, затратив минимум усилий?
Сразу хотелось бы отметить, что данный труд не предназначен для новичков в мире UNIX. Несмотря на мои старания излагать всё как можно подробнее, многие вещи, очевидные для любого подкованного UNIX-админа, остались за бортом, иначе пришлось бы писать целый сериал. По ходу повествования я буду кратко объяснять, что и зачем мы делаем. Надеюсь, такого уровня подробностей хватит большинству читателей.
Итак, наша почтовая система будет использовать только свободное программное обеспечение. Для выполнения поставленной задачи нам понадобится следующее:
n Exim – MTA (Mail Tranfer Agent), на момент написания статьи доступная версия 4.53.
n MySQL – реляционная СУБД требуется для более удобного управления пользователями и доменами, которые будет поддерживать наш почтовый сервер.
n Courier-Imap – один из самых быстрых и защищенных серверов для работы с почтовыми ящиками, поддерживающий работу по протоколу SSL.
n DSPAM – быстрый и очень гибкий в настройке антиспам фильтр.
n SquirrelMail – один из самых лучших веб-интерфейсов для работы с почтовыми ящиками.
n ClamAV – наиболее зрелый из бесплатных антивирусных фильтров.
n ОС FreeBSD версии 5.4 с последними патчами.
В принципе можно взять любую другую UNIX-подобную ОС. Немного изменится принцип установки программного обеспечения, но в целом все остальное будет актуально.
Надеюсь, у всех присутствует подключение к Интернету, имеется последняя обновленная версия портов, DNS настроен верно, MX-записи не кривые, и имя хоста отвечает вашим желаниям для использования его в качестве почтового сервера.
Предупреждение: использование мультидоменного почтового сервера накладывает определенные правила на формат учетных записей пользователя, которые используются для аутентификации. Аутентификация пользователей производится по полному почтовому адресу, включая название домена (к примеру, user@test.com).
Для создания файлов будем использовать следующую конструцию: «cat > filename << "EOF"». Записывать данные в файл, пока не встретится слово EOF.
Установка MySQL
Установить СУБД MySQL несложно, требуется лишь соблюдать определенные правила при сборке. Нужно точно определиться, будут ли база сервера и сам почтовый сервер на одном хосте или на разных (я всегда держу отдельной машиной сервер баз данных, к которому произвожу подключение, дабы разгрузить основной сервер, но это на ваше усмотрение). Если БД будет на другом хосте, требуется позаботиться об удаленном доступе к хосту с базой, а для хоста с почтовым сервером достаточно собрать только клиента. В нашем случае все работает на одной машине.
Собираем MySQL:
# cd /usr/ports/databases/mysql41-server/
# make WITH_CHARSET=koi8_ru WITH_CHARSET=cp1251 WITH_CHARSET=utf8 WITH_CHARSET=latin1 WITH_XCHARSET=all all install clean
Настраиваем запуск так, чтобы MySQL стартовал перед всеми сервисами.
Создаем скрипты для запуска MySQL:
# cd /usr/local/etc/rc.d/
# mv 000.mysql-client.sh 010.mysqlc.sh
# mv mysql-server.sh 015.mysqls.sh
При стандартной установке FreeBSD создается слишком маленький раздел /var для хранения базы нашего почтового сервера, этого не достаточно, для этого переместим БД MySQL в /usr/local/database/mysql во избежание проблем с нехваткой места для базы в дальшейшем.
Добавляем в файл /etc/rc.conf:
mysql_enable="YES"
mysql_dbdir="/usr/local/database/mysql"
Создадим директорию для хранения базы MySQL и передадим права пользователю, от которого работает MySQL:
# mkdir -p /usr/local/database/mysql
# chown -R mysql:mysql /usr/local/database/mysql
Запускаем сервер баз данных:
# /usr/local/etc/rc.d/010.mysqlc.sh start
# /usr/local/etc/rc.d/015.mysqls.sh start
Все должно пройти без сучка и без задоринки, если что-то пошло не так, проверьте права на папку /usr/local/database/mysql, она должна принадлежать пользователю mysql, иначе сервер откажется запускаться.
Производим первичную настройку и защиту нашего SQL-сервера. Вместо «testpassword» и «youpassword» следует использовать пароли, которые вы придумаете сами. Выполнив вышеуказанные действия, можно хотя бы минимально обезопасить себя от взлома. В случае если база MySQL находится на удаленной машине, нужно вместо «exim@localhost» использовать имя с указанием хоста, от которого будет производиться соединение.
# /usr/local/bin/mysqladmin -u root password 'testpassword';
Запускаем клиент mysql и попадаем в консоль сервера MySQL, дальнейшие команды выполняем в нем:
# mysql -u root -ptestpassword
Удаляем тестовую базу:
mysql> drop database test;
Подключаемся к базе с именем mysql:
mysql> use mysql;
Удаляем все записи о правах на базы данных:
mysql> delete from db;
Удаляем все учетные записи, которые не относятся к руту и локальному хосту:
mysql> delete from user where not (user='root' and host='localhost');
Создаем базу данных для Exim:
mysql> create database mail;