Почтовый сервер на HP ProLiant MicroServer. Apache22, Exim — с панелью управления почтовым сервером Vexim

proliantПочтовый сервер для бизнеса:
Почтовый сервер на HP ProLiant MicroServer. Apache22, Exim с панелью управления доменом Vexim, PF- фильтр (PFFW).
Операционная система FreeBSD 9.1
Оборудование:
HP RroLiant MicroServer. (конечно можно купить с контролеером RAID, но
у нас бюджетный вариант… RAID1 средствами операционной системы…
HP ProLiant server (HP Micro G7 N54L NHP 250GB EU Svr (704941-421)) ~ цена 8500руб.
HDD
2x2GB объединим средствами FreeBSD в RAID1
1x2GB /backup (По желанию можно добавить после, в любой момент)

Устанавливаем FreeBSD — описаний этому процесу полно, в данной статье не…
После установки FreeBSD:
Подробное описание — http://www.freebsd.org/doc/ru/books/handbook/geom-mirror.html
1. Для создания массива (предполагается, что FreeBSD установлена на первый жесткий диск ad0)
sysctl kern.geom.debugflags=17 — Включаем вывод дополнительной отладочной информации.
gmirror label -vb round-robin gm0 /dev/ad0 — Создаём зеркало.
Фря должна высказаться-
Metadata value stored on /dev/ad0.
Done.

gmirror load — Инициализируем GEOM
Добавляем автоматическую загрузку модуля ядра:
cat >> /boot/loader.conf
geom_mirror_load=«YES»
^D
Редактируем /etc/fstab (vi /etc/fstab — необходимо знание нескольких команд при работе с редактором vi!)
Добавлем /dev/mirror и исправляем ad на gm
Приблизительно должно быть так:
# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/mirror/gm0s1b      none            swap    sw              0       0
/dev/mirror/gm0s1a      /               ufs     rw              1       1
/dev/mirror/gm0s1d      /usr            ufs     rw              0       0
/dev/mirror/gm0s1f      /home           ufs     rw              2       2
#/dev/mirror/gm0s2d     /store          ufs     rw              2       2
/dev/mirror/gm0s1e      /var            ufs     rw              2       2
/dev/acd0               /cdrom          cd9660  ro,noauto       0       0

shutdown -r now — Перезагрузка
mount — Проверяем разделы
gmirror insert gm0 /dev/ad1 — Добавляем второй диск в зеркало
gmirror status — Проверяем состояние зеркала
***
В случае порчи одного из дисков
gmirror forget gm0
gmirror insert gm0 /dev/ad1
***
Чтобы не пропустить информацию о новых статьях нашего сайта, можно подписаться на новостную e-mail рассылку, если конечно она у нас есть.
Продолжаем настройку FreeBSD:

cp /usr/share/examples/etc/make.conf /etc/make.conf

portsnap fetch extract update
ставим из портов, сначало хотел из pkg_add, но оказалось после проверки portaudit, проги — старые, пришлось делать portupgrade.
поэтому:
cd /usr/port/shell/bash
make install clean
и остальные по аналогии:
mc-light
cvsup-without-gui
lynx
portupgrade
portaudit
sudo
fastest_cvsup

fastest_cvsup -c ru

portaudit -Fda
Если всё нормально — проверим версию Perl
perl-v
Добавим, проверим perl в make.conf
mcedit /etc/make.conf
если с perl не всё ок, то:
portupgrade perl
и снимаем комментарии со строк про CVSUP:

SUP_UPDATE=
SUP= /usr/local/bin/cvsup
SUPFLAGS= -g -L 2
SUPHOST= cvsup5.ru.FreeBSD.org
SUPFILE= /usr/share/examples/cvsup/standard-supfile
PORTSSUPFILE= /usr/share/examples/cvsup/ports-supfile
DOCSUPFILE= /usr/share/examples/cvsup/doc-supfile

пересобираем ядро:

cd /usr/src/sys/i386/conf/
cp GENERIC SERVER

cat >> SERVER
ident SERVER
maxuser 0
nooptions INET6
options SMP
options ACCEPT_FILTER_DATA
options ACCEPT_FILTER_HTTP
options DEVICE_POLLING
options HZ=2000
options SUIDDIR
options PREEMPTION
options IPI_PREEMPTION
device pf
device pflog
device pfsync
device carp
options ALTQ
options ALTQ_CBQ
options ALTQ_RED
options ALTQ_RIO
options ALTQ_HFSC
options ALTQ_CDNR
options ALTQ_PRIQ
options ALTQ_NOPCC
options    ALTQ_DEBUG

В ручную подредактируем:
ident SERVER
maxuser 0
Закоментируем не наш процесор.

cat /etc/pf.conf
mcedit pf.conf
ext_if=»re0″
int_if=»rl0″
lan_net=»192.168.10.0/24″
ext_ip=»188.168.7.80″
table <our_server> { 7.0.1.12/29, 188.10.209.2, 89.146.6.153 }
udp_services=»{ domain, ntp }»
icmp_types=»{ echoreq, unreach}»

set skip on lo0
set timeout { interval 10, frag 30 }
set timeout { tcp.first 120, tcp.opening 30, tcp.established 86400 }
set timeout { tcp.closing 900, tcp.finwait 45, tcp.closed 90 }
set timeout { udp.first 60, udp.single 30, udp.multiple 60 }
set timeout { icmp.first 20, icmp.error 10 }
set timeout { other.first 60, other.single 30, other.multiple 60 }
set timeout { adaptive.start 0, adaptive.end 0 }
set limit { states 10000, frags 5000 }
set loginterface $int_if
set optimization normal
set block-policy drop
set require-order yes
set fingerprints «/etc/pf.os»
set state-policy if-bound

scrub in all
block all
antispoof quick for $int_if inet

pass in on $int_if from $lan_net to any
pass out on $int_if from any to $lan_net
# Ping
#pass in on $ext_if proto icmp from any to any
#pass in on $int_if proto icmp from any to any
#Исходящие
pass out on $ext_if proto tcp all modulate state flags S/SA
pass out on $ext_if proto { udp, icmp } all keep state
#
pass in log on $ext_if proto tcp from <our_server> to $ext_ip port ssh keep state

##############
Некоторые добавки для информации ( никуда добавлять не надо):
Пропускаем traceroute
pass out on $ext_if inet proto udp from any to any port 33433 >< 33626 keep state
почтовый и web-сервер:
tcp_services = «{ ssh, smtp, domain, www, pop3, auth, pop3s }»
udp_services = «{ domain }»
block all
pass out proto tcp to any port $tcp_services keep state
pass proto udp to any port $udp_services keep state
Перечитать конфигурационный файл
pfctl -f /etc/pf.conf
Из локальной
ограничение по количеству разрешенных портов:
client_out = «{ ftp-data, ftp, ssh, domain, pop3, auth, nntp, http, https, 446, cvspserver, 2628, 5999, 8000, 8080 }»
Совместно с правилом:
pass inet proto tcp from $localnet to any port $client_out flags S/SA keep state

pass in on $ext0_if inet proto tcp from any to (self) port { smtp, ssh, imap, pop3, https }
#############

cat >> /etc/rc.conf
pf_enable=»YES»
pf_program=»/sbin/pfctl»
pf_flags=»»
pf_rules=»/etc/pf.conf»
pflog_enable=»YES»
pflog_logfile=»/var/log/pf.log»
pflog_program=»/sbin/pflogd»
pflog_flags=»»

Логи PF пишет в бинарном формате, поэтому если смотреть его обычным способом, увидем сплошные крякозябры.
Читать его можно с помощью tcpdump:
tcpdump -n -e -ttt -r /var/log/pf.log
В режиме реального времени:
tcpdump -n -e -ttt -i pflog0

cd /usr/src
make buildworld
make buildkernel KERNCONF=SERVER
make installkernel KERNCONF=SERVER

reboot

Далее перезагрузка и проверяем работу PF:
pfctl -sa

NTPd — /etc/ntp.conf

cat >> rc.conf
ntpd_enable=»YES»
ntpd_sync_on_start=»YES»

Лог ntpd /etc/newsyslog.conf строку:

/var/log/ntp.log 644 3 100 * J

добавить в /etc/ntp.conf
server 0.ru.pool.ntp.org iburst maxpoll 9 prefer
server 1.ru.pool.ntp.org iburst maxpoll 9 prefer
logfile /var/log/ntp.log
restrict default ignore
driftfile /etc/ntp.drift
restrict 127.0.0.1
Разрешить синхронизацию машинам из сети:
restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap

touch /etc/ntp.drift
chmod 400 /etc/ntp.drift

Коррекция времени:
data 1307271053.15
2013 07мес 27число 10:53 15сек

service ntpd restart

Редактируем /etc/ssh/sshd_config
Делаем доступ по ключу.

AllowUsers Ivan Egor Max
Protocol 2
Редактируем /etc/ssh/sshd_config
MaxAuthTries 3
MaxSessions 4
RSAAuthentication no
PubkeyAuthentication yes
AuthorizedKeysFile    .ssh/authorized_keys
PasswordAuthentication no
PermitEmptyPasswords no
UsePAM no
Banner /etc/ssh/ssh_message

cat > /etc/ssh/ssh_message
**Attention! Authorized only key**

Копируем ключ с другого сервера, если есть:
scp /home/user/location/myfile [email protected]:/home/user/to/new/location/
Можно обратно:
scp [email protected]:/full/from/path/to/file /path/to/put/location

Отслеживаем трафик pftop:
cd /usr/ports/sysutils/pftop
make install clean

Ускорение скорости резолвинга за счет использования PowerDNS
cd /usr/ports/dns/powerdns-recursor
make install clean
cat >> /etc/rc.conf
pdns_recursor_enable=»YES»

Делаем установленный DNS сервер основным:
mcedit /etc/resolv.conf

В самый верх добавляем следующее:
nameserver 127.0.0.1

reboot
—————————

Далее ставим и настраиваем базу данных:
cd /usr/ports/databases/mysql51-server/
make WITH_XCHARSET=all
make install

Редактируем rc.conf:
cat >> /etc/rc.conf

mysql_enable=»YES»
mysql_limit=»YES»

Зоздаем my.cnf для MySQL:
cp /usr/local/share/mysql/my-small.cnf  /etc/my.cnf

Запускаем MySQL сервер:
/usr/local/etc/rc.d/mysql-server start

Проверяем:
ps -ax | grep mysql

Задаем пароль  MySQL root:
mysqladmin -u root password 8PassRooN2
проверяем заход по паролю:
mysql -uroot -p
Enter password:

P.S
Нужно сразу для Vexim доусановить php5-pdo (иначе разбитый лоб, мрачные мысли — как уйти из жизни, как уйти из жизни без боли, суицид со скандалом, или вот такие надписи MYSQL_ATTR_INIT_COMMAND, PHP Fatal error: Undefined class constant ‘MYSQL_ATTR_INIT_COMMAND’ WordPress › Support » MYSQL_ATTR_INIT_COMMAND, но, о чём это я, да, всё просто:
/usr/ports/databases/php5-pdo_mysql

и когда будем устанавливать Vexim — никаких портов — скачиваем с домашнего сайта:
Вобще, я ставил из портов, но потм? пришлось сделал make deintall, всё из за variables.php — этот грёбаный оборот — мне все нервы истрепал — Strict Standards: Non-static method DB::connect() should not be called statically in variables.php
***
<?php
/* SQL Database login information */
require_once «DB.php»;
include_once dirname(__FILE__) . «/i18n.php»;

$sqlserver = «unix+localhost»;
$sqltype = «mysql»;
$sqldb = «vexim»;
$sqluser = «vexim»;
$sqlpass = «CHANGE»;
$dsn = «$sqltype://$sqluser:[email protected]$sqlserver/$sqldb»;
$db = DB::connect($dsn);
if (DB::isError($db)) { die ($db->getMessage()); }
$db->setFetchMode(DB_FETCHMODE_ASSOC);

***
$db = DB::connect($dsn);
забросил борьбу и скачал с айта vxim2.
вобщем make deintall
дальше
pw groupadd vexim -g 90
pw useradd vexim -u 90 -g vexim -d /usr/local/mail -m -s /nonexistant

cd ~
fetch https://github.com/avleen/vexim2/archive/master.zip
или
wget https://github.com/avleen/vexim2/archive/master.zip
распаковываем
***
Как распаковать  tar.gz в текущую директорию:
tar xvfz filename.tar.gz
Аналогично для tar.bz2.
tar jxvf filename.tar.bz2

Как упаковать файлы в tar.gz:
tar cvfz filename.tar.gz dir
Аналогично для tar.bz2.
tar cvfj filename.tar.bz2 dir
***
unzip master.zip
копируем
cp vexim /usr/local/www/vexim
Дальше нужно будет из папки setup залить в базу mysql — базу vexim
для этого:
предварительно посмотреть id vexim
id vexim
uid=90(vexim) gid=90(vexim) groups=90(vexim)
cd ~
perl /root/vexim2-master/setup/create_db.pl —actype=mysql -uid=90 —gid=90 —mailstore=/usr/local/mail
но это…

cd /usr/ports/devel/libtool/
make install clean

cd /usr/ports/www/apache22
make config
+suExec user
+suExec
make
make install clen

cd /usr/ports/lang/php5
make config
Options for php5 5.2.11_1
[X] CLI        Build CLI version
[X] CGI        Build CGI version
[X] APACHE     Build Apache module
[ ] DEBUG      Enable debug
[X] SUHOSIN    Enable Suhosin protection system (not for jails)
[X] MULTIBYTE  Enable zend multibyte support
[ ] IPV6       Enable ipv6 support
[X] MAILHEAD   Enable mail header patch
[X] REDIRECT   Enable force-cgi-redirect support (CGI only)
[X] DISCARD    Enable discard-path support (CGI only)
[X] FASTCGI    Enable fastcgi support (CGI only)
[X] PATHINFO   Enable path-info-check support (CGI only)

make install clean

создаем php.ini:
cp /usr/local/etc/php.ini-development /usr/local/etc/php.ini
Именно development!
+ Добавить date.timezone =»Europe/Moscow»

Найти где лежат файлы find / -name ‘php.ini*’

Идем в конфигурационный файл апача:
mcedit /usr/local/etc/apache22/httpd.conf
Ищем строку:<IfModule dir_module> и прописываем index.php,
Должно быть так:
<IfModule dir_module>
DirectoryIndex index.php index.html

Далее ищем строку:<IfModule mime_module> и добавляем:
AddType application/x-httpd-php .php и
AddType application/x-httpd-php-source .phps
Т.е. должно быть так:
<IfModule mime_module>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

Так же необходимо разрешить работу с виртуальными хостами.
По умолчанию эта возможность закоментирована.
Ищем строку
Virtual hosts
и раскоментируем:
Include etc/apache22/extra/httpd-vhosts.conf
об этом чуть ниже, и более подробно.

Ставим расширения PHP:
cd /usr/ports/lang/php5-extensions/
make

Options for php5-extensions 1.3
[X] BCMATH      bc style precision math functions
[X] BZ2         bzip2 library support
[X] CALENDAR    calendar conversion support
[X] CTYPE       ctype functions
[X] CURL        CURL support
[X] DBA         dba support
[ ] DBASE       dBase library support
[X] DOM         DOM support
[X] EXIF        EXIF support
[X] FILEINFO    fileinfo support
[X] FILTER      input filter support
[ ] FRIBIDI     FriBidi support
[X] FTP         FTP support
[X] GD          GD library support
[X] GETTEXT     gettext library support
[X] GMP         GNU MP support
[X] HASH        HASH Message Digest Framework
[X] ICONV       iconv support
[X] IMAP        IMAP support
[ ] INTERBASE   Interbase 6 database support (Firebird)
[X] JSON        JavaScript Object Serialization support
[ ] LDAP        OpenLDAP support
[X] MBSTRING    multibyte string support
[ ] MCRYPT      Encryption support
[ ] MHASH       Crypto-hashing support
[X] MING        ming shockwave flash support
[ ] MSSQL       MS-SQL database support
[X] MYSQL       MySQL database support
[ ] MYSQLI      MySQLi database support
[X] NCURSES     ncurses support (CLI only)
[ ] ODBC        unixODBC support
[X] OPENSSL     OpenSSL support
[X] PCNTL       pcntl support (CLI only)
[X] PCRE        Perl Compatible Regular Expression support
[X] PDF         PDFlib support (implies GD)
[X] PDO         PHP Data Objects Interface (PDO)
[X] PDO_SQLITE  PDO sqlite driver
[ ] PGSQL       PostgreSQL database support
[X] POSIX       POSIX-like functions
[X] PSPELL      pspell support
[ ] READLINE    readline support (CLI only)
[ ] RECODE      recode support
[X] SESSION     session support
[ ] SHMOP       shmop support
[X] SIMPLEXML   simplexml support
[X] SOAP        SOAP support
[X] SOCKETS     sockets support
[X] SPL         Standard PHP Library
[ ] SQLITE      sqlite support
[ ] SYBASE_CT   Sybase database support
[ ] SYSVMSG     System V message support
[ ] SYSVSEM     System V semaphore support
[ ] SYSVSHM     System V shared memory support
[X] TIDY        TIDY support
[X] TOKENIZER   tokenizer support
[ ] WDDX        WDDX support (implies XML)
[X] XML         XML support
[X] XMLREADER   XMLReader support
[ ] XMLRPC      XMLRPC-EPI support
[X] XMLREADER   XMLReader support
[X] XMLRPC      XMLRPC-EPI support
[X] XMLWRITER   XMLWriter support
[X] XSL         XSL support (Implies DOM)
[X] YAZ         YAZ support (ANSI/NISO Z39.50)
[X] ZIP         ZIP support
[X] ZLIB        ZLIB support

make install

cd /usr/local/www/apache22/data
Создаем файл  index.php для проверки:

cat > index.php
<?php
phpinfo();
?>

Редактируем rc.conf:
mcedit /etc/rc.conf
Добавляем:
apache22_enable=»YES»

Запускаем apache
apachectl start

Заходим http://IP_adress  видим информацию о сервере.

=================================
ip local — 192.168.10.240

Идем в конфигурационный файл апача:
mcedit /usr/local/etc/apache22/httpd.conf
Добавляем: слушать порт 80, 8010, 8025 по локальному адресу, ибо управлять почтовыми
доменами  и создавать пользователей из Интернета мы пока не будем, в целях безопасности.
Listen 192.168.10.240:80
Listen 192.168.10.240:8025
Listen 192.168.10.240:8010

Ищем строку:<IfModule dir_module> и прописываем index.php,
Должно быть так:
<IfModule dir_module>
DirectoryIndex index.php index.html

Далее ищем строку:<IfModule mime_module> и добавляем:
AddType application/x-httpd-php .php и
AddType application/x-httpd-php-source .phps
Т.е. должно быть так:
<IfModule mime_module>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

Так же необходимо разрешить работу с виртуальными хостами.
По умолчанию эта возможность закоментирована.
Ищем строку
#Virtual hosts
и раскоментируем:
Include etc/apache22/extra/httpd-vhosts.conf

Конфигурим виртуальный хост на apache:
mcedit /usr/local/etc/apache22/extra/httpd-vhosts.conf
Должно быть так:

NameVirtualHost 192.168.10.240:80
NameVirtualHost 192.168.10.240:8025
NameVirtualHost 192.168.10.240:8010
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#

<VirtualHost 192.168.10.240:80>
ServerAdmin [email protected]
DocumentRoot «/usr/local/www/apache22/data»
ServerName mail.maildomen.ru
ErrorLog «/var/log/mail.maildomen.ru-error_log»
CustomLog «/var/log/mail.maildomen.ru-access_log» common
</VirtualHost>

<VirtualHost 192.168.10.240:8025>
ServerAdmin [email protected]
DocumentRoot «/usr/local/www/vexim»
ServerName localhost
ErrorLog «/var/log/192.168.10.240-error_log»
CustomLog «/var/log/192.168.10.240-access_log» common
#ServerAlias www.mail.maildomen.ru
<Directory «/usr/local/www/vexim»>
#       Options -Indexes FollowSymLinks
AllowOverride None
Options None
Order Allow,deny
Allow from all
</Directory>
</VirtualHost>

<VirtualHost 192.168.10.240:8010>
ServerAdmin [email protected]
DocumentRoot «/usr/local/www/phpMyAdmin»
ServerName localhost
ErrorLog «/var/log/phpmyadmin-error_log»
CustomLog «/var/log/phpmyadmin-access_log» common
#ServerAlias mytest.com

Alias /pma/ «/usr/local/www/phpMyAdmin/»

<Directory «/usr/local/www/phpMyAdmin/»>
Options none
AllowOverride Limit

Order Deny,Allow
Deny from all
Allow from 192.168.10.0/24
</Directory>
</VirtualHost>

Проверяем синтаксис конфигурационного файла apache:
apachectl -t
Syntax OK

mkdir -p /etc/ssl/certs
cd /etc/ssl/certs
openssl req -x509 -newkey rsa:1024 -keyout mail.pem -out mail.pem -days 3650 -nodes

Country Name (2 letter code) [CA]: RU
State or Province Name (full name) [Quebec]: Moscow
Locality Name (eg, city) [Montreal]: Moscow
Organization Name (eg, company) [Open Network Architecture]: Maildome Co.
Organizational Unit Name (eg, section) [Internet Department]: IT
Common Name (eg, YOUR name) []: mail.maildome.ru
Email Address []: [email protected]

chmod 440 /etc/ssl/certs/mail.pem
chgrp mail /etc/ssl/certs/mail.pem
cd /usr/ports/mail/exim
make
Выбираем интересующие опции и убираем ненужные,

make install clean

mcedit /etc/rc.conf

Добавляем:
exim_enable=»YES»
sendmail_enable=»NONE»

Выключаем sendmail
/etc/rc.d/sendmail stop

правим /etc/mail/mailer.conf

cat /etc/mail/mailer.conf

# $FreeBSD: release/9.1/etc/mail/mailer.conf…
# Execute the «real» sendmail program, named /usr/libexec/sendmail/sendmail
#
sendmail        /usr/local/sbin/exim
send-mail       /usr/local/sbin/exim
mailq           /usr/local/sbin/exim -bp
newaliases      /usr/local/sbin/exim -bi
hoststat        /usr/local/sbin/exim
purgestat       /usr/local/sbin/exim

Ну и правим конфиг под свои нужды…

***
cat /usr/local/etc/exim/configure

primary_hostname = mail.maildomen.ru
hide mysql_servers = localhost/exim_db/exim/exim_password
domainlist local_domains = ${lookup mysql{select domain from domains where domain=’${domain}’}}
domainlist relay_to_domains = ${lookup mysql{select domain from domains where domain=’${domain}’}}
hostlist   relay_from_hosts = localhost : 127.0.0.1
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data
tls_certificate = /etc/ssl/certs/mail.pem
tls_privatekey = /etc/ssl/certs/mail.pem
daemon_smtp_ports = 25 : 465
tls_on_connect_ports = 465
qualify_domain = maildomain.ru
allow_domain_literals = false
exim_user = exim
exim_group = mail
never_users = root
host_lookup = *
rfc1413_hosts = *
rfc1413_query_timeout = 5s
ignore_bounce_errors_after = 2h
timeout_frozen_after = 7d
return_size_limit = 10K
split_spool_directory = true
syslog_timestamp = no
begin acl

acl_check_rcpt:
acl_check_rcpt:
accept  hosts = :

deny    domains       = +local_domains
local_parts   = ^[.] : ^.*[@%!/|]

deny    domains       = !+local_domains
local_parts   = ^[./|] : ^.*[@%!] : ^.*/\\.\\./

accept  senders=${lookup mysql{SELECT senders FROM whitelist \
WHERE senders=’${quote_mysql:$sender_address}’}}

deny    message       = HELO/EHLO required by SMTP RFC
condition     = ${if eq{$sender_helo_name}{}{yes}{no}}

deny    message       = Go Away! You are spammer.
condition     = ${if match{$sender_host_name} \
{bezeqint\\.net|net\\.il|dialup|dsl|pool|peer|dhcp} \
{yes}{no}}

deny    message       = rejected because $sender_host_address \
is in a black list at $dnslist_domain\n$dnslist_text
hosts         = !+relay_from_hosts
!authenticated = *
log_message   = found in $dnslist_domain
dnslists      = bl.spamcop.net : \
cbl.abuseat.org : \
dnsbl.njabl.org : \
pbl.spamhaus.org
warn
set acl_m0 = 25s
warn
hosts = +relay_from_hosts
set acl_m0 = 0s
warn
authenticated = *
set acl_m0 = 0s

warn
logwrite = Delay $acl_m0 for $sender_host_name \
[
***

Далее необходимо скопировать конфигурационные файлы из проекта Vexim:
cd /usr/local/etc/exim/
cp /usr/local/share/doc/vexim/docs/*.conf  ./
cp /usr/local/share/doc/vexim/docs/configure  ./

Создание ключа и ssl-сертификата для Apache2
openssl req -new -x509 -days 3650 -keyout server.key -out server.pem (server.crt)
На вопрос «Enter PEM pass phrase:» отвечаем паролем, подтверждаем и запоминаем
Apache будет спрашивать пароль у при загрузке, можно избежать млишние вопросы:) Поэтому снимаем пароль с ключа:
cp server.key{,.orig}
openssl rsa -in server.key.orig -out server.key
rm server.key.orig

=================================================
Полезные команды при работе с SSL-сертификатами
Создание ключа для SSL-сертификата.
openssl req -batch -noout -new -newkey rsa:2048 -nodes -keyout cert.key
Генерация CSR-запроса:
openssl req -new -key cert.key -out cert.csr
Имя домена на который создается запрос прописывается в Common Name! Это важно, A challenge password и An optional company name вводить не нужно (просто нажимаем enter).

Создание ключа и запроса с данными одной командой:
openssl req -batch -new -newkey rsa:2048 -nodes -keyout cert.key -subj ‘/C=RU/ST=Moscow/L=Moscow/O=Jingel Inc/OU=Research team/[email protected]/CN=example.com’ -out cert.csr

Создание ключа и самоподписанного сертификата одной командой:

openssl req -newkey rsa:1024 -nodes -keyout server.key -out server.crt -x509 -days 3650 -subj \
«/C=XX/ST=XX/L=XX/O=XX/OU=XX/CN=example.com/emailAddress=»[email protected]

Убрать пароль с ключа (необходимо когда сертификат ставится руками в конфигурацию Apache иначе он при запуске будет просить пароль):
openssl rsa -in cert.key -out cert.key
вводим пароль с консоли (либо -passin pass:supersecretpassw0rd что менее секурно так как пароль сохраняется в .history)

Посмотреть данные CSR:
openssl req -noout -text -in cert.csr

Данные сертификата (проверить кем выдан например):
openssl x509 -noout -text -in cert.crt

Проверить, что ключ соответствует сертификату:

openssl x509 -noout -modulus -in cert.crt | openssl md5
openssl rsa -noout -modulus -in cert.key | openssl md5

Проверить выдачу HTTPS:

openssl s_client -connect localhost:443 -state -debug
GET / HTTP/1.0
Для почты:
openssl s_client -connect localhost:993 -showcerts

На операционной системе Windows (в IIS в частности) используется PFX-контейнер, его можно создать из файлов ключа и сертификата командой:

openssl pkcs12 -export -in certificate.crt -inkey certificate.key -out certificate.pfx

Как изменить ssl-сертификат, выданный при регистрации сервера?
cd /usr/local/etc/apache22/
openssl req -new -newkey rsa:1024 -nodes -keyout server.key -x509 -days 5000 -out server.crt
==========================================

Настройка HTTPS. Создание саподписанного SSL сертификата
Делаем следующее:
cd /usr/local/etc/apache22/
openssl req -new -newkey rsa:1024 -nodes -keyout server.key -x509 -days 3650 -out server.crt

смотрим в /usr/local/etc/apach22/httpd.conf, должно быть раскоментированно:
Include etc/apache22/extra/httpd-ssl.conf

mcedit etc/apache22/extra/httpd-ssl.conf
Listen 443
<VirualHost_default_:443>
DocumentRoot «/usr/local/www/data»
ServerName mail.maildomen.ru
ServerAdmin [email protected]
ErrorLog «/var/log/httpds-error.log»
TransferLog «/var/log/httpds-access.log»
….
SSLCertificateFile «/usr/local/etc/apace22/server.crt»
SSLCertificateKeyFile «/usr/local/etc/apace22/server,key»

<VirtualHost>

Если нужно правим /etc/pfconf
нужно открыть порты наружу…

Пока всё. Статья, больше написанна в рекламных целях, т.е., могут быть не точности, но ход и конфиги родные.

PS. Можем оказать посильную помошь в настройке вашего сервера
Apache, Exim, Postfix, FreeBSD, Dovecot и пр.
Оказываем услуги по поддержке и раскрутке вашего домена, а также по настройке сайта.
Принимаются поправеи и коментарии.

One thought on “Почтовый сервер на HP ProLiant MicroServer. Apache22, Exim — с панелью управления почтовым сервером Vexim

  1. Респект. Толково. Жаль, что наткнулся только тогда когда поимел проблемы с MYSQL_ATTR_INIT_COMMAND, следуя другим примерам.

Comments are closed.