Postfix как шлюз для Exchange (часть 3).
Пришло время продолжить настройку, об этом я писал здесь:
https://khlebalin.wordpress.com/category/linux-and-unix/page/2/
Вроде бы все сделал, но осталось некое чувство недосказанности (недоделанности). Пришла в голову мысль еще и Веб интерфейс прикрутить.
Немного почитав форумы в инете остановился на postfixadmin. Но для того, чтоб это работало нам понадобится Apache и MySQL.
Если апач еще не прикручен, то пришло время его прикрутить:
Для работы DSPAM WebUI, PostfixAdmin и web-интерфейса RoundCube нам потребуется web-сервер с поддержкой suexec и MySQL аутентификации (для DSPAM WebUI), и поддержкой PHP (для RoundCube и PostfixAdmin). В качестве web-сервера мы будем использовать apache , собранный с поддержкой suexec и модули к нему: mod_auth_mysql_another и mod_php. Приступим к установке apache с поддержкой suexec. Включим поддержку suexec и ограничим ее деревом каталогов, где будут находится скрипты. Для этого добавим в /etc/make.conf:
Собираем порт:
Устанавливаем mod_auth_mysql_another:
Устанавливаем mod_php:
Разрешаем запуск apache, для этого добавляем в /etc/rc.conf:
Создадим директорию, где в последствии будем размещать конфигурационные файлы виртуалхостов:
Теперь можно заняться конфигурированием apache. Редактируем файл /usr/local/etc/apache22/httpd.conf
Здесь приведу конфиг для версии 1.3 (но можно и установить версию 2.2, там конфиг незначительно отличается от текущего, но в нашем случае незначительно…)
#
# Раздел 1: Общие настройки
#
ServerType standalone
ServerRoot «/usr/local»
PidFile /var/run/httpd.pid
ScoreBoardFile /var/run/httpd.scoreboard
Timeout 300
KeepAlive Off
MinSpareServers 5
MaxSpareServers 10
StartServers 5
MaxClients 150
MaxRequestsPerChild 100
# Модули. Лишние модули закоментированы.
# Если они Вам потребуются — можете раскоментировать.
LoadModule config_log_module libexec/apache/mod_log_config.so
LoadModule mime_module libexec/apache/mod_mime.so
LoadModule dir_module libexec/apache/mod_dir.so
LoadModule cgi_module libexec/apache/mod_cgi.so
LoadModule access_module libexec/apache/mod_access.so
LoadModule auth_module libexec/apache/mod_auth.so
LoadModule unique_id_module libexec/apache/mod_unique_id.so
LoadModule mysql_auth_module libexec/apache/mod_auth_mysql.so
LoadModule php5_module libexec/apache/libphp5.so
#LoadModule mmap_static_module libexec/apache/mod_mmap_static.so
#LoadModule vhost_alias_module libexec/apache/mod_vhost_alias.so
#LoadModule env_module libexec/apache/mod_env.so
#LoadModule mime_magic_module libexec/apache/mod_mime_magic.so
#LoadModule negotiation_module libexec/apache/mod_negotiation.so
#LoadModule status_module libexec/apache/mod_status.so
#LoadModule info_module libexec/apache/mod_info.so
#LoadModule includes_module libexec/apache/mod_include.so
#LoadModule autoindex_module libexec/apache/mod_autoindex.so
#LoadModule asis_module libexec/apache/mod_asis.so
#LoadModule imap_module libexec/apache/mod_imap.so
#LoadModule action_module libexec/apache/mod_actions.so
#LoadModule speling_module libexec/apache/mod_speling.so
#LoadModule userdir_module libexec/apache/mod_userdir.so
#LoadModule alias_module libexec/apache/mod_alias.so
#LoadModule rewrite_module libexec/apache/mod_rewrite.so
#LoadModule anon_auth_module libexec/apache/mod_auth_anon.so
#LoadModule db_auth_module libexec/apache/mod_auth_db.so
#LoadModule digest_module libexec/apache/mod_digest.so
#LoadModule proxy_module libexec/apache/libproxy.so
#LoadModule cern_meta_module libexec/apache/mod_cern_meta.so
#LoadModule expires_module libexec/apache/mod_expires.so
#LoadModule headers_module libexec/apache/mod_headers.so
#LoadModule usertrack_module libexec/apache/mod_usertrack.so
#LoadModule log_forensic_module libexec/apache/mod_log_forensic.so
#LoadModule setenvif_module libexec/apache/mod_setenvif.so
ClearModuleList
AddModule mod_log_config.c
AddModule mod_mime.c
AddModule mod_dir.c
AddModule mod_cgi.c
AddModule mod_access.c
AddModule mod_auth.c
AddModule mod_unique_id.c
AddModule mod_so.c
AddModule mod_auth_mysql.c
AddModule mod_php5.c
#AddModule mod_mmap_static.c
#AddModule mod_vhost_alias.c
#AddModule mod_env.c
#AddModule mod_mime_magic.c
#AddModule mod_negotiation.c
#AddModule mod_status.c
#AddModule mod_info.c
#AddModule mod_include.c
#AddModule mod_autoindex.c
#AddModule mod_asis.c
#AddModule mod_imap.c
#AddModule mod_actions.c
#AddModule mod_speling.c
#AddModule mod_userdir.c
#AddModule mod_alias.c
#AddModule mod_rewrite.c
#AddModule mod_auth_anon.c
#AddModule mod_auth_db.c
#AddModule mod_digest.c
#AddModule mod_proxy.c
#AddModule mod_cern_meta.c
#AddModule mod_expires.c
#AddModule mod_headers.c
#AddModule mod_usertrack.c
#AddModule mod_log_forensic.c
#AddModule mod_setenvif.c
#
# Раздел 2: Настройки по-умолчанию для главного хоста и вирт. хостов.
#
Port 80
User www
Group www
ServerAdmin admin@example.com
DocumentRoot «/usr/local/www/data»
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
DirectoryIndex index.html index.php index.cgi
AccessFileName .htaccess
<Files ~ «^.ht»>
Order allow,deny
Deny from all
Satisfy All
</Files>
UseCanonicalName On
TypesConfig /usr/local/etc/apache/mime.types
DefaultType text/plain
HostnameLookups Off
ServerSignature On
ErrorLog /var/log/httpd-error.log
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
AddType application/x-tar .tgz
AddEncoding x-compress .Z
AddEncoding x-gzip .gz .tgz
AddHandler cgi-script .cgi
LogLevel warn
LogFormat «%h %l %u %t «%r» %>;s %b «%{Referer}i» «%{User-Agent}i»» combined
LogFormat «%h %l %u %t «%r» %>;s %b» common
LogFormat «%{Referer}i -> %U» referer
LogFormat «%{User-agent}i» agent
CustomLog /var/log/httpd-access.log combined
#
# Раздел 3: Виртуальные хосты
#
NameVirtualHost *:80
Include /usr/local/etc/apache/vhosts/*.conf
Далее пришло время приступить к установке MySQL:
В /etc/make.conf добавляем:
собираем порт:
в /etc/rc.conf добавляем:
создаем конфигурационный файл MySQL:
добавляем в /var/db/mysql/my.cnf:
запускаем MySQL:
/usr/local/etc/rc.d/mysql-server start
Установим PostfixAdmin:
Пакет postfixadmin установлен и мы переходим к его настройке. В процессе настройки мы позаботимся о безопасности, настроим виртуальный хост для postfixadmin таким образом, чтобы даже в случае взлома злоумышленник не смог причинить практически никакого вреда системе. Итак, поехали.
Для скриптов postfixadmin мы выделим отдельную площадку. Для этих целей создадим пользователя и домашнюю директорию с деревом каталогов под виртуалхост, установим соответствующие права:
# pw useradd postfixadmin -g www -s “/sbin/nologin” -c “PostfixAdmin”
# mkdir /home/postfixadmin
# mkdir /home/postfixadmin/tmp
# mkdir /home/postfixadmin/admin.example.com
# chmod -R 770 /home/postfixadmin
В директории /home/postfixadmin/tmp будут размещаться временные файлы, генерируемые PHP скриптом (сессии, к примеру), а в директории /home/postfixadmin/admin.example.com – скрипты postfixadmin. Перенесем их в эту директорию и зададим нужного владельца на дерево каталогов:
# cp -R /usr/local/www/postfixadmin/* /home/postfixadmin/admin.example.com/
# chown -R postfixadmin:www /home/postfixadmin
Создадим базу данных для posfixadmin:
# mysql
mysql> create database postfix;
mysql> grant all on postfix.* to ‘postfix’@’localhost’ identified by ‘postfix’;
Создадим файл /home/postfixadmin/admin.example.com/config.local.php и отредактируем его (для совместимости с последующими версиями не рекомендуется редактировать config.inc.php, вместо этого рекомендуется заносить измененные опции в config.local.php):
$CONF[‘postfix_admin_url’] = ‘http://admin.example.com/’;
$CONF[‘theme_css’] = ‘css/default.css’;
$CONF[‘postfix_admin_path’] = dirname(__FILE__);
$CONF[‘default_language’] = ‘ru’;
$CONF[‘database_type’] = ‘mysql’;
$CONF[‘database_host’] = ‘localhost’;
$CONF[‘database_user’] = ‘postfix’;
$CONF[‘database_password’] = ‘postfix’;
$CONF[‘database_name’] = ‘postfix’;
$CONF[‘database_prefix’] = »;
$CONF[‘admin_email’] = ‘postmaster@example.com’;
$CONF[‘smtp_server’] = ‘localhost’;
$CONF[‘smtp_port’] = ’25’;
$CONF[‘encrypt’] = ‘md5crypt’;
$CONF[‘generate_password’] = ‘NO’;
$CONF[‘page_size’] = ’10’;
$CONF[‘default_aliases’] = array (
‘abuse’ => ‘abuse@example.com’
);
$CONF[‘domain_path’] = ‘NO’;
$CONF[‘domain_in_mailbox’] = ‘YES’;
$CONF[‘aliases’] = ’10’;
$CONF[‘mailboxes’] = ’10’;
$CONF[‘maxquota’] = ’10’;
$CONF[‘quota’] = ‘NO’;
$CONF[‘quota_multiplier’] = ‘1024000’;
$CONF[‘transport’] = ‘NO’;
$CONF[‘vacation’] = ‘NO’;
$CONF[‘vacation_domain’] = »;
$CONF[‘alias_control’] = ‘NO’;
$CONF[‘special_alias_control’] = ‘YES’;
$CONF[‘logging’] = ‘YES’;
$CONF[‘show_header_text’] = ‘NO’;
$CONF[‘header_text’] = ‘:: Postfix Admin ::’;
$CONF[‘show_footer_text’] = ‘YES’;
$CONF[‘footer_text’] = ‘Return to admin.example.com’;
$CONF[‘footer_link’] = ‘http://admin.example.com’;
$CONF[‘welcome_text’] = ‘Hi, Welcome to your new account.’;
Теперь переходим к настройке виртуалхоста для postfixadmin. В созданной нами директории для конфигурационных файлов виртуалхостов (/usr/local/etc/apache/vhosts) создаем файл postfixadmin.conf:
touch /usr/local/etc/apache/vhosts/postfixadmin.conf
Редактируем его:
<Virtualhost>
ServerName admin.example.com
ServerAdmin admin@example.com
DocumentRoot «/home/postfixadmin/admin.example.com»
# Поскольку postfixadmin написан на PHP и мы
# не предполагаем запуск чего-либо кроме PHP скриптов
# на этом виртуалхосте, то на всякий случай отключаем CGI
# и запрещаем изменение параметров ./htaccess’ом
<Directory /home/postfixadmin/admin.example.com>
Options -ExecCGI
AllowOverride None
</Directory>
# Запрещаем PHP скриптам выходить за пределы
# директории виртуалхоста
php_admin_value open_basedir /home/postfixadmin
php_admin_value safe_mode_include_dir /home/postfixadmin
php_admin_value safe_mode_exec_dir /noexec
php_admin_value doc_root /home/postfixadmin
php_admin_value upload_tmp_dir /home/postfixadmin/tmp
php_admin_value session.save_path /home/postfixadmin/tmp
# Логирование
ErrorLog /var/log/httpd/postfixadmin-error.log
TransferLog /var/log/httpd/postfixadmin-access.log
</Virtualhost>
Рестартим apache:
# apachectl restart
Открываем в браузере адрес: http://admin.example.com/setup.php
PostfixАdmin создаст базу данных. Затем на этой же странице вводим инсталляционный пароль (зачем он нужен – ниже), postfixadmin сгенерирует хеш, этот хеш помещаем в config.local.php:
#$CONF[‘setup_password’] = ‘hashed_password’;
Возвращаемся на страницу http://admin.example.com/setup.php и с помощью инсталляционного пароля добавляем аккаунт главного админа. В дальнейшем можно будет добавлять главных админов с помощью этого инсталляционного пароля. Так что лучше удалить setup.php от греха подальше. В случае необходимости сходить на сайт postfixadmin’а и взять его из тарбола труда не составит, если, конечно, Вы каждый день не добавляете супер админов 🙂 Удаляем setup.php:
# rm /home/postfixadmin/admin.example.com/setup.php
Всё, PostfixAdmin установлен.
Далее осталось, если есть необходимость докрутить настройку постфикса через веб интерфейс.
Собственно на этом настройка закончена, продолжение следует.
Всем удачи.
Фильм «ОДИНОЧКА».
На днях по совету своего друга посмотрел фильм «Одиночка», который недавно транслировался на НТВ.
Фильм меня реально порадовал.
Десять баллов из десяти по десятибалльной шкале.
ВСЕМ РЕКОМЕНДУЮ К ПРОСМОТРУ !!!
Режиссер |
Сергей Щербин |
Актеры |
Данила Козловский, Ян Цапник, Андрей Кузнецов, Сергей Кудрявцев, Яков Шамшин |
Сценарий |
Андрей Тумаркин |
Продюсеры |
Инесса Юрченко, Сергей Щеглов |
Производство |
ООО «Триикс Медиагруп» по заказу телеканала НТВ |
Вооруженный бандит, лицо которого скрыто под маской, совершает налет на сберкассу. Во время нападения погибает молодая женщина, жена оперуполномоченного Фролова. Представителям «органов» достаточно быстро удается выйти на след бандита — неизвестный, позвонивший в отделение милиции, дает операм наводку на дачу, где скрываются преступник. Сотрудники милиции проводят операцию, в ходе которой задержан некий Андрей Громов, который на самом деле является сотрудником спец. служб. Вина его полностью доказана и он получает 12 лет колонии строгого режима… Под видом бандита он должен был попасть в тюрьму, чтобы обзавестись связями в криминальном мире. А нападение на сберкассу послужило отличным поводом к этому. Громов был уверен, что спустя два-три года он выйдет на свободу. Но про него забыли. И вот Громов на свободе. Он хочет только одного — отомстить тем, кто оставил его на зоне. За вышедшим из тюрьмы агентом начинается охота. Но ликвидировать Громова сложно — он бывший спецназовец, кроме того, годы, проведенные в тюрьме, не прошли для него даром… |
|
Год |
2010 |