Перейти к собственно контенту

Архив

Метка: mail

Данная статья описывает настройку почтового сервера на ОС FreeBSD ( у меня стоит версия 11.1-STABLE ) на базе Exim в качестве SMTP сервера с поддержкой SpamAssasin и ClamAV, Dovecot в качестве POP3 / IMAP сервера, поддержкой SSL и веб интерфейсами Vexim для упрвавления ящиками и Roundcube в качестве почтового веб клиента. Данные будем хранить в MySQL

Установка Web сервера и сервера баз данных

Ставим nginx
# cd /usr/ports/www/nginx
# make config-recursive
# make install clean

в /etc/rc.conf добавляем:
nginx_enable="YES"

Ставим MySQL ( я выбрал MariaDB 10.1 )
# cd /usr/ports/databases/mariadb101-server
# make config-recursive
# make install clean

в /etc/rc.conf добавляем:
mysql_enable="YES"
Запускаем MySQL
# /usr/local/etc/rc.d/mysql-server start

Задаем пароль для root в MySQL ( в скобках сам пароль )
# mysqladmin -u root password 'password'

Ставим PHP ( отмечаем FPM )
# cd /usr/ports/lang/php71
# make config-recursive
# make install clean

в /etc/rc.conf добавляем:
php_fpm_enable="YES"

Приводим файл /usr/local/etc/php-fpm.conf к такмоу виду:
[global]
pid = run/php-fpm.pid
error_log = /var/log/php-fpm.log
events.mechanism = kqueue
include=/usr/local/etc/php-fpm.d/*.conf

Редактируем файл пула
# ee /usr/local/etc/php-fpm.d/www.conf
и приводим к такому виду
[www]
user = www
group = www
listen = /tmp/www.sock
listen.backlog = -1
listen.owner = www
listen.group = www
listen.mode = 0666
pm.status_path = /status
ping.path = /ping
pm = dynamic
pm.max_children = 5
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 5
pm.max_requests = 5000
security.limit_extensions = .php
chdir = /usr/local/www/
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
php_admin_value[cgi.fix_pathinfo] = 0
php_admin_value[open_basedir] = /usr/local/www:/tmp:/usr/local/share/pear:/usr/local/mail:/var/www
php_admin_value[error_log] = /usr/local/www/logs/php-fpm-error.log
php_admin_value[memory_limit] (далее…)

В дополнение к статье по настройке почтового сервера на FreeBSD решил написать как настроить тоже самое, но на ОС CentOS 6.

Подключаем репозиторий Remi и Epel

rpm --import https://fedoraproject.org/static/0608B895.txt
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpm
yum install yum-priorities
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

Приводим файл /etc/yum.repos.d/epel.repo к такому виду

[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

и файл /etc/yum.repos.d/remi.repo к такому виду:

[remi]
name=Les RPM de remi pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror
enabled=1
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
failovermethod=priority

[remi-test]
name=Les RPM de remi en test pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/test/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/test/mirror
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

Ставим MySQL , добавляем в атозагрузку и стартуем:

yum install mysql mysql-server
chkconfig --levels 235 mysqld on
/etc/init.d/mysqld start

Установим пароь для root в MySQL следующей командой:

mysql_secure_installation

Устанавливаем nginx ( да да, как и в прошлый раз мы обойдемся без тяжеловесного Apache и сделаем все на NGINX + PHP-FPM ), добавим в автозагрузку и стартуем
yum install nginx
chkconfig --levels (далее…)

Настраивал почтовый сервер,с Roundcube, и почему то не хотели отправляться письма, в логах exim показывал следующее:

rejected EHLO from localhost [127.0.0.1]: syntactically invalid argument(s): _

Чтоб избежать такой ошибки в конфиг exim добавляем:
helo_allow_chars = "_"

Иногда получается так,что почтовый сервер настраивается по умолчанию на формат mbox (хранение в одном файле),что имеет ряд своих минусов. В статье расскжу как мигрировать с mbox на maildir на связке Exim + Dovecot.

1) Конвертируем почту из mbox формата в .maildir
Для этого ставим утилиту mb2md из портов
deathstar# /usr/ports/mail/mb2md make install clean (FreeBSD)
или с репозиториев
deathstar@deathstar.name$: sudo aptitude install mb2md (Linux Debian)
И используем утииту так:
deathstar# mb2md -s /var/www/data/deathstar/email/deathstar.name/deathstar -d /var/www/data/deathstar/email/deathstar.name/deathstar/.maildir/

Где /var/www/data/deathstar/email/deathstar.name/deathstar — путь до файла mbox,тут же и будет каталог maildir.
Дописываем в конфиг /usr/local/ispmgr/etc/ispmgr.conf рядом с другими Option (после MTA и POP3)
Option MailDir
Заменям конфиг Dovecot

Настройка dovecot:

Заменяем в конфиге с пользователями mbox на maildir:

deathstar# cat dovecot.passwd | \
awk -F\: '{ print $1":"$2":"$3":"$4"::"$6":::maildir:"$6"/.maildir" }' > dovecot.passwd.new
mv dovecot.passwd.new dovecot.passwd

Находим конфиг exim и заменяем в нем строчку
file = ${extract{4}{:}{${lookup{$local_part@$domain}lsearch{/etc/exim4/passwd}}}}/mbox
на две строки
directory = ${extract{4}{:}{${lookup{$local_part@$domain}lsearch{/etc/exim4/passwd}}}}/.maildir
maildir_format

Перезапускаем сервисы и проверяем работу.