Postfixadmin на centos 7. установка и настройка веб-интерфейса для управления postfix

CentOS: установка и настройка Dovecot 2 + Exim + ClamAV + Postfixadmin

Установка выполняется на:

# cat /etc/redhat-release CentOS release 6.5 (Final)

Предполагается, что MySQL и Apache HTTP уже установлены.

Создаём базу для доменов и почтовых ящиков:

mysql> create database vexim; Query OK, 1 row affected (0.00 sec)

Создаём пользователя и даём доступ к этой базе:

mysql> grant all on vexim.* to vexim@localhost identified by 'PassWord'; Query OK, 0 rows affected (0.00 sec)

Устанавливаем всё необходимое для Postfixadmin:

# yum -y install php-imap php-mbstring php-common php-pdo php-mysql php-cli

Установка Posfixadmin

Качаем архив:

# wget http://sourceforge.net/projects/postfixadmin/files/postfixadmin/postfixadmin-2.91/postfixadmin-2.91.tar.gz … 2014-07-12 09:14:03 (540 KB/s) — “postfixadmin-2.91.tar.gz” saved [2489702/2489702] # tar xpf postfixadmin-2.91.tar.gz # mv postfixadmin-2.91 /var/www/vhosts/postfixadmin.domain.org.ua # chown -R setevoy:setevoy /var/www/vhosts/postfixadmin.domain.org.ua # rm postfixadmin-2.91.tar.gz # cd /var/www/vhosts/postfixadmin.domain.org.ua

В файле config.inc.php настраиваем доступ к созданной базе:

$CONF['configured'] = true; $CONF['database_type'] = 'mysql'; $CONF['database_host'] = 'localhost'; $CONF['database_user'] = 'vexim'; $CONF['database_password'] = 'PassWord'; $CONF['database_name'] = 'vexim';ar.gz

Установка ClamAV

Требуется репозиторий Epel или RPMForge:

# yum -y install clamd

Редактируем /etc/clamd.conf:

# Run as another user (clamd must be started by root for this option to work) # Default: don't drop privileges User exim

Редактируем /etc/freshclam.conf:

# By default when started freshclam drops privileges and switches to the # «clamav» user. This directive allows you to change the database owner. # Default: clamav (may depend on installation options) DatabaseOwner exim

Меняем владельца:

# chown -R exim:exim /var/log/clamav # chown -R exim:exim /var/run/clamav/

Запускаем:

# service clamd start

Установка Exim и Dovecot

# yum -y install dovecot dovecot-mysql exim exim-mysql … Installed: dovecot.x86_64 1:2.0.9-7.el6_5.1 dovecot-mysql.x86_64 1:2.0.9-7.el6_5.1 exim.x86_64 0:4.72-5.el6 exim-mysql.x86_64 0:4.72-5.el6

Проверяем:

# yum list installed | grep -E «exim|dovecot» dovecot.x86_64 1:2.0.9-7.el6_5.1 dovecot-mysql.x86_64 1:2.0.9-7.el6_5.1 exim.x86_64 4.72-5.el6 @epel exim-mysql.x86_64 4.72-5.el6 @epel

Наcтройка Dovecot

Получаем UID пользователя exim (от него у нас будут работать и ClamAV, и Dovecot и сам Exim):

# cat /etc/passwd | grep exim exim:x:93:93::/var/spool/exim:/sbin/nologin

Редактируем файл /etc/dovecot/dovecot.conf, и приводим его к такому виду (было желание описать все подробно – но их слишком много, см. ссылки в конце статьи):

base_dir = /var/run/dovecot/ disable_plaintext_auth = no # задаём UID пользователя first_valid_uid = 93 listen = * login_greeting = Dovecot ready man. login_log_format_elements = user= method=%m rip=%r lip=%l %c mail_location = maildir:/var/vmail/%d/%u passdb { args = /etc/dovecot/dovecot-mysql.conf driver = sql } protocols = imap pop3 service auth { unix_listener auth-master { group = exim mode = 0660 user = exim } user = root } service imap-login { chroot = client_limit = 256 process_limit = 128 process_min_avail = 3 service_count = 1 vsz_limit = 64 M } service pop3-login { chroot = client_limit = 256 process_limit = 128 process_min_avail = 3 service_count = 1 vsz_limit = 64 M } ssl = no userdb { driver = passwd } userdb { args = /etc/dovecot/dovecot-mysql.conf driver = sql } protocol imap { imap_client_workarounds = tb-extra-mailbox-sep mail_plugins = quota imap_quota } protocol pop3 { pop3_client_workarounds = outlook-no-nuls oe-ns-eoh pop3_uidl_format = %08Xu%08Xv } protocol lda { auth_socket_path = /var/run/dovecot/auth-master postmaster_address = root@domain.org.ua }

Создаём файл с описанием подключения к MySQL – /etc/dovecot/dovecot-mysql.conf:

driver = mysql connect = host=localhost dbname=vexim user=vexim password=PassWord default_pass_scheme = MD5-CRYPT password_query = SELECT `username` as `user`, `password` FROM `mailbox` WHERE `username` = '%n@%d' AND `active`='1' user_query = SELECT 93 AS `uid`, 93 AS `gid` FROM `mailbox` WHERE `username` = '%n@%d' AND `active`='1'

Проверим базу (вообще мы пользователя создадим позже, тут просто для примера) – найдём пользователя:

mysql> use vexim; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changedmysql> SELECT 93 AS `uid`, 93 AS `gid` FROM `mailbox` WHERE `username` = 'root@domain.org.ua' AND `active`='1'; +——+——+ | uid | gid | +——+——+ | 93 | 93 | +——+——+ 1 row in set (0.00 sec)

Хеш пароля:

mysql> SELECT `username` as `user`, `password` FROM `mailbox` WHERE `username` = 'root@domain.org.ua' AND `active`='1'; +———————+————————————+ | user | password | +———————+————————————+ | root@domain.org.ua | $1$eae4d3fb$80IltPiRe52/deAF3hmlO. | +———————+————————————+ 1 row in set (0.00 sec)

Создаём директорию:

# mkdir /var/vmail # chown exim:exim -R /var/vmail # chown exim:exim -R /var/spool/exim

Запускаем и проверяем:

# service dovecot start Starting Dovecot Imap: [ OK ]# tail /var/log/maillog … Jul 12 09:53:38 venti dovecot: master: Dovecot v2.0.9 starting up (core dumps disabled)

Запустился, пока без ошибок.

Настройка Exim

# mv /etc/exim/exim.conf /etc/exim/exim.conf.default

Создаём новый /etc/exim/exim.conf:

# имя хоста, будет использоваться при HELO primary_hostname = mx0.domain.org.ua # Параметры доступа к MySQL # hide — не выводить при выполнении проверки конфигурации exim -bV # Формат — адрес/база/пользователь/пароль hide mysql_servers = localhost/vexim/vexim/PassWord # если есть несколько внешних IP/интерфейсов — указываем какой слушать # local_interfaces = 77.***.***.20 # список локальных доменов, будет использоваться в виде +local_domains # например для отключения проверок; # тут включаем все домены из «своей базы» # можно добавить список через двоеточие domainlist local_domains = ${lookup mysql{SELECT `domain` FROM `domain` WHERE `domain`='${quote_mysql:$domain}' AND `active`='1'}} # список доменов, к которым разрешаем релей почты domainlist relay_to_domains = ${lookup mysql{SELECT `domain` FROM `domain` WHERE `domain`='${quote_mysql:$domain}' AND `active`='1'}} # список сетей, из которых разрешён релей hostlist relay_from_hosts = localhost:127.0.0.0/8:77.***.***20 # задаём имена ACL для проверок acl_smtp_rcpt = acl_check_rcpt acl_smtp_data = acl_check_data # acl_smtp_helo = acl_check_helo # подключаем ClamAV av_scanner = clamd:/var/run/clamav/clamd.sock # Проверка на спам; подключим позже # spamd_address = /var/run/spamd.sock # TLS, тоже подключим позже # SSL/TLSпубличный сертификат и приватный ключ # tls_certificate = /etc/ssl/certs/mail.pem # tls_privatekey = /etc/ssl/certs/mail.pem # tls_advertise_hosts = * # tls_on_connect_ports=465 # домен, добавляемый при отправке локальной почты; # например письма от root будут вида root@domain.org.ua qualify_domain = domain.org.ua # домен для локальный получателей, противоположность пункта выше; # если не указать — будет использоваться значение из qualify_domain qualify_recipient = domain.org.ua # принимать ли почту с доменов, состоящих из IP; # не вижу адекватных серверов, которые бы так отправляли — запрещаем; # по-умолчанию тоже false allow_domain_literals = false # пользователь, под которым будет работать Exim exim_user = exim exim_group = exim never_users = root # отключаем запросы идентификации хоста по RFC 1413 # т.к. у многих отправителей с этим проблемы rfc1413_query_timeout = 0s # если смысл указать только при использовании нестандартных портов; # и при настройке TLS/SSL; # у меня провайдер блокирует 25, поэтому на сервере добавил 250; daemon_smtp_ports = 25 : 250 # Unqualified names — адреса отправителей, # для которых домен указан без «завершающей части»; # — точки, например — root@domain # разрешаем только для списка relay_from_hosts sender_unqualified_hosts = +relay_from_hosts # то же, но для получателей recipient_unqualified_hosts = +relay_from_hosts # timeout, после которого удаляем недоставленные bounce message: # Non-Delivery Report (NDR), Delivery Status Notification (DSN), # Non-Delivery Notification (NDN) ignore_bounce_errors_after = 45m # timeout, после которого недоставленное письмо будет удалено из очереди timeout_frozen_after = 7d # адрес, на который будут отправляться уведомления о недоставленных письмах freeze_tell = root@domain.org.ua # список хостов, которым не делаем проверку корректности HELO/EHLO helo_accept_junk_hosts = 127.0.0.0/8 # timeout перед попыткой отправки замороженного # (недоставленного с первой попытки) письма auto_thaw = 1h # приветственное сообщение сервера smtp_banner = «$primary_hostname, ESMTP EXIM $version_number» # макс. количество одновременных подключений для отправки smtp_accept_max = 50 # макс. кол-во писем за одно подключение smtp_accept_max_per_connection = 25 # макс. подключений с одного хоста smtp_accept_max_per_host = 10 # установите true, что бы письма обрабатывались # в очереди по мере их поступления — # «раньше пришло — раньше ушло»; # иначе используется случайный порядок отправки; # нельзя использовать если след. опция true queue_run_in_order = false # если установлено в true — Exim будет разбивать очередь # по отдельным поддиректориям (62 штуки) в /var/spool/exim/, # вместо создания одного списка на отправку; # все директории будут обрабатываться в случайном порядке # полезно в плане производительности если много почты split_spool_directory = true remote_max_parallel = 15 return_size_limit = 70k message_size_limit = 64M # разрешаем символ «_» в сообщении HELO от клиентов helo_allow_chars = _ # принудительная синхронизация с клиентом при обмене сообщениями/командами # может быть проблема с некоторыми почтовыми клиентами, например с Thunderbird smtp_enforce_sync = true # формат лога # + — писать в лог; # — — не писать в лог; # +all_parents — записывать все промежуточные хосты (?); # +connection_reject — разорванные соединения; # +incoming_interface — интерфейс (реально — IP); # +lost_incoming_connections — потерянные входящие соединения; # +received_sender — отправитель; # +received_recipients — получатель; # +smtp_confirmation — подтверждения SMTP?; # +smtp_syntax_error — ошибки синтаксиса SMTP; # +smtp_protocol_error — ошибки протокола SMTP; # -queue_run — работа очереди (замороженные сообщения); # полный список и вообще про логгирование: # http://www.exim.org/exim-html-current/doc/html/spec_html/ch-log_files.html log_selector = +all_parents +connection_reject +incoming_interface +lost_incoming_connection +received_sender +received_recipients +smtp_confirmation +smtp_syntax_error +smtp_protocol_error -queue_run # должен отключать формат даты syslog-а в логе exim-а, но разницы не увидел syslog_timestamp = false # правила проверки почты по ACL begin acl # проверяем адрес получателя — блок ACL acl_check_rcpt # acl_check_rcpt: accept hosts = : # некорректные символы в адресе (кроме «своих» доменов из списка local_domains) deny message = «incorrect symbol in address» domains = !+local_domains local_parts = ^[./|] : ^.*[@%!] : ^.*/../ # принимать почту для ящиков postmaster в доменах из списка local_domains # в данном случае не нужно # accept local_parts = postmaster # domains = +local_domains # отклоняем, если нет HELO/EHLO deny message = «HELO/EHLO required by SMTP RFC» condition = ${if eq{$sender_helo_name}{}{yes}{no}} # отклоняем отправителей, у которых IP вместо домена # исключение — список relay_from_hosts deny message = «Your IP in HELO — access denied!» hosts = * : !+relay_from_hosts condition = ${if eq{$sender_helo_name} {$sender_host_address}{true}{false}} # отклоняем, если в HELO наш собственный IP deny condition = ${if eq{$sender_helo_name} {$interface_address}{yes}{no}} hosts = !127.0.0.1 : !localhost : * message = «My IP in your HELO! Access denied!» # отклоняем, если в EHLO наше имя хоста deny message = Message was delivered by ratware — own condition = ${if match_domain{sender_helo_name} {$primary_hostname:+local_domains:+relay_to_domains} {true}{false}} log_message = remote host used our name in EHLO/HELO. # отклоняем отправителей с именем хоста только из цифр deny condition = ${if match{$sender_helo_name} {N^d+$N}{yes}{no}} hosts = !127.0.0.1 : !localhost : * message = «Incorrect HELO string» # отклонять отправителей, у которых в имени хоста adsl/dialup и т.д. # не используется в данном случае # deny message = «your hostname is bad (adsl, poll, ppp & etc).» # condition = ${if match{$sender_host_name} # {adsl|dialup|pool|peer|dhcp} # {yes}{no}} # задаём задержку при подключении клиента # спам-боты как правило не дожидаются ответа сервера # требуется smtp_enforce_sync = true set acl_m0 = 30s accept hosts = +relay_from_hosts:127.0.0.0/8 set acl_m0 = 0s delay = $acl_m0 # проверяем в спам-базах # сервера спам-баз опрашиваются по очереди # сверху вниз, если не отправитель не найден на первом, то # запрашивается второй, и т.д.; # если не найден ни в одном # из списка — то почта пропускается deny message = «you in blacklist — $dnslist_domain —> $dnslist_text; $dnslist_value» log_message = REJECT: Listed in $dnslist_domain hosts = !+relay_from_hosts dnslists = cbl.abuseat.org : dul.dnsbl.sorbs.net : sbl-xbl.spamhaus.org # проверяем наличие получателя в локальных доменах accept domains = +local_domains verify = recipient # принимаем почту от локальных доменов accept hosts = +relay_from_hosts # пропускаем прошедшим авторизацию accept authenticated = * # если письмо не попало не под одно правило в списке — отклоняем его deny message = «Access deny — this not open relay!» log_message = REJECT: We aren't an open relay acl_check_data: deny malware = * message = «Your message contains viruses: $malware_name» # тут потом добавим фильтры антиспама accept begin routers dnslookup: driver = dnslookup domains = ! +local_domains transport = remote_smtp ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8 no_more system_aliases: driver = redirect allow_fail allow_defer data = ${lookup mysql{SELECT `goto` FROM `alias` WHERE `address`='${quote_mysql:$local_part@$domain}' OR `address`='${quote_mysql:@$domain}'}} dovecot_user: driver = accept condition = ${lookup mysql{SELECT `goto` FROM `alias` WHERE `address`='${quote_mysql:$local_part@$domain}' OR `address`='${quote_mysql:@$domain}'}{yes}{no}} transport = dovecot_delivery begin transports remote_smtp: driver = smtp dovecot_delivery: driver = pipe command = /usr/libexec/dovecot/deliver -d $local_part@$domain message_prefix = message_suffix = delivery_date_add envelope_to_add return_path_add log_output user = exim address_pipe: driver = pipe return_output address_reply: driver = autoreply begin retry * * F,2h,15m; G,16h,1h,1.5; F,4d,6h begin rewrite begin authenticators auth_plain: driver = plaintext public_name = LOGIN server_prompts = Username:: : Password:: server_condition = «${if crypteq{$2}{${lookup mysql{SELECT `password` FROM `mailbox` WHERE `username` = '${quote_mysql:$1}'}}}{yes}{no}}» server_set_id = $1 auth_login: driver = plaintext public_name = PLAIN server_condition = «${if crypteq{$3}{${lookup mysql{SELECT `password` FROM `mailbox` WHERE `username` = '${quote_mysql:$2}'}}}{yes}{no}}» server_prompts = : server_set_id = $2 auth_cram_md5: driver = dovecot public_name = CRAM-MD5 server_socket = /var/run/dovecot/auth-client server_set_id = $auth1

Читайте также:  Восстановление сайтов. диагностика неисправности веб ресурса.

Проверяем синтаксис конфига:

Источник: https://rtfm.co.ua/centos-ustanovka-i-nastrojka-dovecot-2-exim-clamav-postfixadmin/

Установка и настройка почтового сервера PostfixAdmin на Ubuntu 16.04

В этой статье мы покажем вам, как установить и настроить почтовый сервер с Postfix, Dovecot, Spamassassin, SQLite и PostfixAdmin на Ан Ubuntu 16.04 VPS с Nginx и PHP 7.0. Это руководство должно работать так же хорошо и на других системах Linux VPS, но была испытана и написана для Ubuntu 16.04 VPS.

Войдите на свой VPS через SSH

ssh furious@my_server

Обновите систему и установите необходимые пакеты

sudo apt-get update && sudo apt-get -y upgrade
sudo apt-get -y install wget nano dbconfig-common sqlite3

Создайте системного пользователя

По соображениям безопасности, мы создадим нового пользователя системы, который будет владельцем всех почтовых ящиков.

sudo useradd -r -u 150 -g mail -d /var/vmail -s /sbin/nologin -c «Virtual Mail User» vmail
sudo mkdir -p /var/vmail
sudo chmod -R 770 /var/vmail
sudo chown -R vmail:mail /var/vmail

Установка PHP 7.0 и PHP всех необходимых модулей

Если вы не установили PHP на вашем сервере, вы можете установить последнюю стабильную версию PHP 7.0 и все необходимые модули, с помощью следующей команды:

sudo apt-get -y install php-fpm php-cli php7.0-mbstring php7.0-imap php7.0-sqlite3

Установка и настройка Nginx

Если у вас нет веб-сервера, установленного на вашем компьютере, установите Nginx из официальных репозиториев Ubuntu:

sudo apt-get -y install nginx

Создание нового блока сервера Nginx со следующим содержанием:

sudo nano /etc/nginx/sites-available/postfixadmin.your_domain.ruserver { listen 80; server_name postfixadmin.your_domain.ru; return 301 https://$server_name$request_uri;
} server { listen 443 ssl; server_name postfixadmin.your_domain.ru; root /var/www/postfixadmin-3.0; index index.php; charset utf-8; ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem; ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key; ssl_protocols TLSv1.2; ssl_ciphers «EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4»; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_ecdh_curve secp521r1; location / { try_files $uri $uri/ index.php; } location ~* .php$ { fastcgi_split_path_info ^(.+.php)(/.+)$; include fastcgi_params; fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_buffer_size 16k; fastcgi_buffers 4 16k; }
}

Активируйте блок сервера, создав символическую ссылку:

sudo ln -s /etc/nginx/sites-available/postfixadmin.your_domain.ru /etc/nginx/sites-enabled/postfixadmin.your_domain.ru

Проверьте конфигурацию Nginx и перезапустите Nginx:

sudo nginx -t
sudo service nginx restart

PostfixAdmin

PostfixAdmin является PHP на основе веб – интерфейса, который позволяет управлять базой данных, и использует postfix для виртуальных доменов и пользователей.

Последняя версия PostfixAdmin, 3 -й версии, поддерживает MySQL, PostgreSQL и базу данных SQLite. В этом руководстве мы будем использовать последнюю.

Скачайте архив PostfixAdmin из SourceForge и распакуйте его в каталог /var/www/:

wget -q -O — «http://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-3.0/postfixadmin-3.0.tar.gz» | sudo tar -xzf — -C /var/www

Откройте файл конфигурации почты и измените следующие значения:

sudo nano /var/www/postfixadmin-3.0/config.inc.php$CONF['configured'] = true;
$CONF['database_type'] = 'sqlite';
$CONF['database_name'] = '/var/vmail/postfixadmin.db';
// $CONF['database_host'] = 'localhost';
// $CONF['database_user'] = 'postfix';
// $CONF['database_password'] = 'postfixadmin';
// $CONF['database_name'] = 'postfix'; $CONF['domain_path'] = 'NO';
$CONF['domain_in_mailbox'] = 'YES';sudo chown -R www-data: /var/www/postfixadmin-3.0

Создание базы данных SQLite:

sudo touch /var/vmail/postfixadmin.db
sudo chown vmail:mail /var/vmail/postfixadmin.db
sudo usermod -a -G mail www-data

Для заполнения базы данных перейдите к https://postfixadmin.your_domain.ru/setup.php и вы должны увидеть что – то вроде этого:

Testing database connection – OK – sqlite://:xxxxx@//var/vmail/postfixadmin.db

Создайте нового пользователя с правами администратора:

bash /var/www/postfixadmin-3.0/scripts/postfixadmin-cli admin add admin@your_domain.ru —password strong_password —password2 strong_password —superadmin 1 —active 1

Установите и настройте Postfix

Установите postfix с помощью команды ниже:

sudo apt-get install postfix

Создайте следующие файлы:

sudo nano /etc/postfix/sqlite_virtual_alias_maps.cfdbpath = /var/vmail/postfixadmin.db
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'sudo nano /etc/postfix/sqlite_virtual_alias_domain_maps.cfdbpath = /var/vmail/postfixadmin.db
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = printf('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'sudo nano /etc/postfix/sqlite_virtual_alias_domain_catchall_maps.cfdbpath = /var/vmail/postfixadmin.db
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = printf('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'sudo nano /etc/postfix/sqlite_virtual_domains_maps.cfdbpath = /var/vmail/postfixadmin.db
query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'sudo nano /etc/postfix/sqlite_virtual_mailbox_maps.cfdbpath = /var/vmail/postfixadmin.db
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'sudo nano /etc/postfix/sqlite_virtual_alias_domain_mailbox_maps.cfdbpath = /var/vmail/postfixadmin.db
query = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = printf('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1'

Отредактируйте файл main.cf:

postconf -e «myhostname = $(hostname -A)» postconf -e «virtual_mailbox_domains = sqlite:/etc/postfix/sqlite_virtual_domains_maps.cf»
postconf -e «virtual_alias_maps = sqlite:/etc/postfix/sqlite_virtual_alias_maps.cf, sqlite:/etc/postfix/sqlite_virtual_alias_domain_maps.cf, sqlite:/etc/postfix/sqlite_virtual_alias_domain_catchall_maps.cf»
postconf -e «virtual_mailbox_maps = sqlite:/etc/postfix/sqlite_virtual_mailbox_maps.cf, sqlite:/etc/postfix/sqlite_virtual_alias_domain_mailbox_maps.cf» postconf -e «smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem»
postconf -e «smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key»
postconf -e «smtpd_use_tls = yes»
postconf -e «smtpd_tls_auth_only = yes» postconf -e «smtpd_sasl_type = dovecot»
postconf -e «smtpd_sasl_path = private/auth»
postconf -e «smtpd_sasl_auth_enable = yes»
postconf -e «smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination» postconf -e «mydestination = localhost»
postconf -e «mynetworks = 127.0.0.0/8»
postconf -e «inet_protocols = ipv4» postconf -e «virtual_transport = lmtp:unix:private/dovecot-lmtp»

Откройте файл master.cf, найти разделы submission inet n и smtps inet n и отредактируйте следующим образом:

sudo nano /etc/postfix/master.cfsmtp inet n — y — — smtpd
#smtp inet n — y — 1 postscreen
#smtpd pass — — y — — smtpd
#dnsblog unix — — y — 0 dnsblog
#tlsproxy unix — — y — 0 tlsproxy
submission inet n — y — — smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes
# -o smtpd_reject_unlisted_recipient=no -o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING
smtps inet n — y — — smtpd -o syslog_name=postfix/smtps
# -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
# -o smtpd_reject_unlisted_recipient=no -o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING

Включите и перезапустите службу postfix

systemctl enable postfix
systemctl restart postfix

Установка и настройка Dovecot

Установить Dovecot с поддержкой SQLite, используя команду ниже:

sudo apt-get install dovecot-imapd dovecot-lmtpd dovecot-pop3d dovecot-sqlite

Откройте файл /etc/dovecot/conf.d/10-mail.conf и измените следующие значения:

mail_location = maildir:/var/vmail/%d/%n
mail_privileged_group = mail
mail_uid = vmail
mail_gid = mail
first_valid_uid = 150
last_valid_uid = 150

Откройте файл /etc/dovecot/conf.d/10-auth.conf и измените следующие значения:

auth_mechanisms = plain login
#!include auth-system.conf.ext
!include auth-sql.conf.ext

Создайте новый файл dovecot-sql.conf.ext:

sudo nano /etc/dovecot/dovecot-sql.conf.extdriver = sqlite
connect = /var/vmail/postfixadmin.db
default_pass_scheme = MD5-CRYPT
password_query = SELECT username as user, password, '/var/vmail/%d/%n' as userdb_home, 'maildir:/var/vmail/%d/%n' as userdb_mail, 150 as userdb_uid, 8 as userdb_gid FROM mailbox WHERE username = '%u' AND active = '1'
user_query = SELECT '/var/vmail/%d/%n' as home, 'maildir:/var/vmail/%d/%n' as mail, 150 AS uid, 8 AS gid, printf('dirsize:storage=', quota) AS quota FROM mailbox WHERE username = '%u' AND active = '1'

В файле /etc/dovecot/conf.d/10-ssl.conf включите поддержку SSL:

ssl = yes

Откройте файл /etc/dovecot/conf.d/15-lda.conf и установите в параметре postmaster_address адрес электронной почты.

postmaster_address = postmaster@vps.your_domain.ru

Откройте файл /etc/dovecot/conf.d/10-master.conf, найдите раздел службы LMTP и изменить его на:

service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { mode = 0600 user = postfix group = postfix }
}

Найдите раздел службы аутентификации и изменить его на:

service auth { unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix } unix_listener auth-userdb { mode = 0600 user = vmail #group = vmail } user = dovecot
}

Измените раздел службы auth-worker к следующим функциям:

service auth-worker { user = vmail
}

Установите разрешения:

chown -R vmail:dovecot /etc/dovecot
chmod -R o-rwx /etc/dovecot

Включите и перезапустите службу dovecot

systemctl enable dovecot systemctl restart dovecot

SpamAssassin

SpamAssassin является инструментом с открытым кодом написанный на Perl, который помогает отфильтровать нежелательную почту. Если вы хотите включить и настроить SpamAssassin пожалуйста, продолжайте со следующими шагами.

Читайте также:  Версии 1с. обзор всех продуктов 1с:предприятие. какие существуют версии программы 1с

Чтобы установить SpamAssassin, выполните следующую команду:

sudo apt-get install spamassassin
sudo adduser spamd —disabled-login

Откройте файл /etc/default/spamassassin и внесите следующие изменения:

ENABLED=1
OPTIONS=»—create-prefs —max-children 5 -d 127.0.0.1 —username spamd —helper-home-dir /home/spamd/ -s /home/spamd/spamd.log»
PIDFILE=»/home/spamd/spamd.pid»
CRON=1

Для интеграции SpamAssassin с Postfix, добавьте следующую строку в конце файла /etc/postfix/master.cf:

smtp inet n — — — — smtpd -o content_filter=spamassassin spamassassin unix — n n — — pipe user=nobody argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

Включите и перезапустите службу Spamassassin

systemctl enable spamassassin
systemctl restart spamassassin
systemctl restart postfix

Если все настроено правильно, то вы должны в состоянии войти в свой бэкэнд PostfixAdmin, перейдя по ссылке https://postfixadmin.your_domain.ru/и создать свой первый виртуальный домен и почтовый ящик.

Источник: https://andreyex.ru/ubuntu/ustanovka-i-nastrojka-pochtovogo-servera-postfixadmin-na-ubuntu-16-04/

Настройка почтового сервера на CentOS6

Всем доброго времени суток!!!

Возникла у меня необходимость поднять почтарь на CentOS.

Статей в интернете много, но я выложу свои настройки тут.

Сама статья взята тут

Что бы не забыть я перенесу ее сюда… с небольшими комментариями что мне довелось изменить , что бы у меня заработало

Установка и настройка почтового сервера Postfix в CentOS 6.6 x32

В данном посте описан процесс установки почтового сервера на основе MTA Postfix. В качестве платформы будет использована CentOS версии 6.6 x32.
Для полноценной работы понадобятся дополнительные пакеты, такие как: Dovecot v2, MySQL, Postgrey, ClamAV.

Введение

Почтовая переписка важный инструмент взаимодействия сотрудников компании применительно к корпоративному сектору. Сейчас практически каждая уважаемая себя компания имеет свой почтовый сервер.

Плохим тоном считается, использования публичных почтовых служб. У клиентов такой компании, да и у партнеров может сложится плохое впечатление о фирме, если они увидят адрес известного почтового сервера (mail.ru, yandex.ru, gmail.com и т.д.)

Преимущества Postfix как агента передачи следующие:

  • Быстрый и безопасный
  • Модульная архитектура
  • Бесплатный

Минусы:

  • Сложная установка и настройка по сравнению с Windows решениями.
  • Требуется знать основы LinuxДавайте разберем зачем нам столько пакетов и зачем они используются:
  • Postfix – будет заниматься отправкой и получением писем от других почтовых серверов (MTA – Mail Transfer Agent / почтовый агент пересылки )
  • Dovecot – занимается доставкой почты от Postfix к почтовым клиентам (MDA – mail delivery agent / почтовый агент доставки)
  • MySQL – в базе MySQL будут содержаться такие данные как наш домен company.kz, имена почтовых учетных записей, пароли и т.д.
  • Postgrey – эффективный спам фильтр, который будет отсеивать спам не создавая большой вычислительной нагрузки на сервер.
  • ClamAV и ClamSMTP – это антивирус задача которого проверка почтовых сообщений на предмет вирусов
  • PostfixAdmin – веб интерфейс для администратора почтового сервера который позволяет управлять почтовым сервером, такие операции как заведение доменов, почтовых учетный записей, смена паролей производятся именно в нем.
  • RoundCube – веб интерфейс для пользователей почтового сервера, этот интерфейс позволяет работать с почтовым ящиком. Пользователь в нем просматривает почтовые сообщения, отправлять письма и т.д.

Если Вы хотите реальный почтовый сервер, Вам понадобится:

  • Белый статический IP адрес. Обычно эти IP адреса выдает провайдер.
  • Зарегистрированное доменное имя – company.ru. Можете воспользоватся любым регистратором, например www.reg.ru
  • Два DNS сервера которые будут отвечать за домен – company.ru. Бывает так, что после регистрации домена регистратор дает свои DNS сервера в пользование. Можно уговорить провайдера поддерживать Ваш домен, а можно настроить свои DNS сервера
  • PTR запись которая правильно резолвит Ваш почтовый хост (111.222.333.444 -> mail.company.ru). Обычно PTR запись прописывает провайдер, поэтому админ обращается к провайдеру с запросом занести PTR запись вида – IP адрес -> mail.company.ru

Более детальная информация по этой части предоставлена пользователем @Cruiser78 в сообщении с темой: Как не надо настраивать свой почтовый сервер
Скажем спасибо @Cruiser78 за ценную информацию которую он всегда любезно предоставляет.

Краткое содержание:

  1. Настройка сетевого адаптера
  2. Установка MySQL и создание базы
  3. Установка и настройка Postfix
  4. Установка и настройка Dovecot
  5. Установка Postgrey
  6. Установка ClamAV
  7. Установка PostfixAdmin и Apache
  8. Настройка DNS сервера
  9. Настройка PostfixAdmin
  10. Установка и настройка RoundCube Web Mail
  11. Настройка фаерволла iptables
  12. Установка Fail2Ban

Альтернативный почтовый сервер на Exim:
http://linuxforum.ru/viewtopic.php?id=21934

Аналогичная установка на CentOS 7:
Установка и настройка почтового сервера Postfix на CentOS 6.5 x32

Домен: point.local
Имя хоста почтового сервера: mx.point.local
IP адрес почтового сервера: 192.168.1.2

Если у вас другой домен и имя хоста, а также IP адрес сервера – поменяйте их на свои в конфигах!

Начнем нашу установку с настройки сетевого адаптера

1. Настройка сетевого адаптера

Наш сервер имеет всего один сетевой адаптер, после установки CentOS, настройки этого адаптера хранятся в файле “/etc/sysconfig/network-scripts/ifcfg-eth0”.
По умолчанию этот файл содержит следующие настройки

# cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=»eth0″ HWADDR=»08:00:27:79:17:85″ NM_CONTROLLED=»yes» ONBOOT=»no»

Следует дописать в этот файл дополнительные настройки, подправим содержимое этого файла, открываем его в текстовом редакторе vi:
# vi /etc/sysconfig/network-scripts/ifcfg-eth0 Чтобы внести текст в файл, нажмите клавишу “INS” -это активирует режим редактирования, переведет вас с режима просмотра в режим редактирования. После чего вводите новые данные. Обычно после нажатия “INS”, текст вставляется комбинацией “SHISFT”+”INS”. По окончанию ввода текста, нажмите кнопку “ESC” и потом нажмите одновременно кнопки “SHIFT+z+z” или введите “:w!” и потом нажмите “ENTER” – это делается для сохранения файла и выхода с редактора.

Поиск файла в редакторе vi делается путем нажатия кнопки “/”, далее вводится текст который нужно найти.

DEVICE=»eth0″ HWADDR=»08:00:27:79:17:85″ NM_CONTROLLED=»no» ONBOOT=»yes» GATEWAY=192.168.1.250 IPADDR=192.168.1.2 NETMASK=255.255.255.0 BROADCAST=192.168.1.255

Здесь мы дописали IP адрес нашего сервера/компьютера, его подсеть и шлюз в Интернет.

Перезапустим сетевую службу:

# service network restart

Вписываем наш домен и адреса DNS серверов:

# vi /etc/resolv.conf search point.local nameserver 127.0.0.1 // адрес обратной петли, это ускорит работу DNS nameserver 192.168.1.2 //Первичный DNS nameserver 111.222.333.444 //Вторичный DNS

Здесь IP адреса: 192.168.1.2 – это IP адрес нашего почтового сервера, он также будет выступать в роли DNS сервера 111.222.333.444 – адрес DNS сервера провайдера

Перезапустим сетевую службу, чтобы внесенные нами изменения вступили в силу:

# service network restart

Проверьте, ваш сервер должен иметь выход Интернет:

Источник: http://blog.scalehobby.kz/itadmin/2017/01/05/nastrojka-pochtovogo-servera-na-centos6/

Я построю свой почтовый сервер с postfix и dovecot

В рамках программы по унификации установленных серверных систем встала задача по переделке почтового сервера. Вдумчивое изучение мануалов и руководств показало довольно любопытный факт – нигде не было найдено однозначно достоверного руководства или подобия Best Practice по развёртыванию почтовика.

Мануал пошаговый, основывается на внутренней документации компании и затрагивает совершенно очевидные вопросы. Гуру могут не тратить время, ноу-хау здесь нет – руководство является сборной солянкой и публикуется только потому, что все найденные руководства по развёртыванию почтовика напоминали картинку о том, как рисовать сову.

Для тех, кто не хочет собирать всё вручную, оптимальным вариантом, пожалуй, будет пакет iRedMail. Отличная сборка Postfix, Dovecot, Apache, MySQL/PostgreSQL, Policyd, Amavis, Fail2ban, Roundcube и даже Awstats. Ставится легко, работает стабильно, есть красивая админка (бесплатная) и очень красивая админка (платная) не идущая ни в какое сравнение с убогим PostfixAdmin.

Поклонники же ручного труда могут продолжить чтение. Старый сервер работал под Gentoo и нёс в себе термоядерный заряд из Postfix+VDA с Courier и глючно реализованного SASL, решавшим подключаться к mysql только при первой аутентификации. План переделки заключался в миграции на наш внутренний стандарт – CentOS.

Роль MTA и MDA возлагается на связку Postfix и Dovecot, а в качестве вспомогательной артиллерии: Amavis + SpamAssassin + ClamAV + Postgrey + Fail2Ban. Письма хранятся в файлах, а учётные записи и домены — в MySQL. На сервере крутится несколько почтовых доменов и есть поддержка виртуальных квот.

[*] Подключаем дополнительные репозитории.

Мне хватило epel, rpmforge, centalt и remi. Не все они нужны постоянно включёнными, и можно установить плагин yum-priorities; ну или если лень разбираться, то включать-отключать их руками. Далее я буду говорить, что из какого репозитория устанавливается.

[*] Работа с SELinux достойна отдельного материала, поэтому в рамках данной статьи примем, что selinux по-ламерски сделан permissive или disabled.

[*] Не забываем про ntp:

yum install ntp
ntpdate
chkconfig ntpd on && /etc/init.d/ntpd start

Это позволит избежать возможной проблемы Dovecot’a «Time has moved backwards». Также можно в /etc/sysconfig/ntpd изменить ключ на -L, чтобы ntpd не слушал сеть.

[*] В завершение подготовительного этапа ставим утилиты, которые облегчат нам тестирование и дальнейшую работу:

yum install wget mlocate bind-utils telnet mailx sharutils

Для нашей базы данных используем MySQL 5.5 от Remi. Можно и mariadb, конечно, но пока MySQL ещё жив, вышеупомянутая сборка меня полностью устраивает. Версия важна, т.к. при обновлении Postfix до 2.10 он захочет новую версию и если поставить 5.

Читайте также:  Punto switcher скачать бесплатно. как пользоваться

1 из base, то обновление постфикса из CentALT потянет за собой MariaDB. Кому больше нравится PgSQL — пожалуйста, ставьте его. Развёртывание ничем отличаться не будет, даже конфигурационные файлы postfix можно будет брать неизменными.

Отличаться будет только настройка самого postgresql и создание базы.

Для запуска подойдёт вариант «из коробки» (в репозитории ниже представлен слегка расширенный my.cnf). Создаём пользователя postfix с одноимённой базой и всеми правами на неё.

CREATE USER postfix@localhost IDENTIFIED BY 'mypassword';
CREATE DATABASE postfix;
GRANT ALL PRIVILEGES ON postfix.* TO postfix;

Антивирусом у меня работает ClamAV. Стоит отметить, что самая последняя версия есть на CentALT, однако она в упор не хочет оттуда скачиваться, умирая на попытке скачать 50 мегабайт clamav-db. Поэтому ставим из EPEL на пару минорных версий меньше, погоды это не сделает. Clam будет работать у нас через сокет, поэтому в /etc/clamd.conf комментируем строки:

#TCPSocket 3310
#TCPAddr 127.0.0.1

Обновление баз антивируса подключается автоматически, за него отвечает утилита freshclam. Проконтролируем, чтобы соответствующий файл находился в cron.daily и запускаем сервис антивируса
freshclam
chkconfig clamd on && /etc/init.d/clamd start

Развёртывать или не развёртывать веб-интерфейс — личное дело каждого. Мне он понадобился для контроля процесса миграции. Вам он может понадобиться для создания структуры базы и администрирования доменов, ящиков, алиасов и т.п.

Для последних задач в большинстве руководств активно предлагается PostfixAdmin, но мне он категорически не нравится.

Равно как я бы рекомендовал придерживаться принципа разделения, по которому почтовый сервер должен заниматься обработкой почты, веб-сервер держать веб-приложения, а DB-сервер работать с базами данных.

Для тех, кто не захочет развёртывать веб-подсистему, прилагаю SQL-дамп базы данных для почтового сервера на все случаи жизни. Даже с некоторыми неиспользуемыми возможностями: mysql_dump.sql на гитхабе.

Если же потребуется PostfixAdmin — ставьте nginx/apache + php и собственно сам PostfixAdmin. И обратите внимание, что — из структуры удалены некоторые «лишние» таблицы. Нюансов настройки PostfixAdmin немного. Редактируем config.inc.php, обращая внимание на следующие параметры:

## должен содержать тот же метод хэширования пароля, что и dovecot
$CONF['encrypt'] = 'md5crypt';
$CONF['transport_default'] = 'virtual';
$CONF['emailcheck_resolve_domain']='NO';
## Поскольку будет использоваться dovecot, убираем префикс
$CONF['create_mailbox_subdirs_prefix']='';
## На случай, если захочется использовать хранение квот не в maildir, а в базе данных через dict
$CONF['new_quota_table'] = 'yes';

После этого можно идти на domain.tld/postfixadmin/setup.php, генерировать пароль и создавать учётную запись супер-администратора. Теперь сгенерированный хэш надо внести в файл config.inc.php и изменить его статус:
$CONF['configured'] = true;
$CONF['setup_password'] = 't8h9i9s2i7s7m2y4l9o8g9i4n:a0n9d5p2a5s2s9w5o4r7d';

[!] Postfixadmin сам создаёт структуру базы и в mysql, и в postgresql при запуске setup.php. Если намереваетесь использовать его, установку следует проводить на пустую базу.

Проконтролируем, что в базе postfix создана вся дефолтная структура и перейдём к установке MTA и MDA. Postfix уже идёт в комплекте с CentOS, но не самый новый. Обновим его из CentALT и оттуда же поставим Dovecot.

yum update postfix
yum install dovecot dovecot-mysql

Все основные системы корабля будут оперировать с файлами в /var/vmail под отдельным юзверем:

groupadd -g 1000 vmail
useradd -d /var/vmail/ -g 1000 -u 1000 vmail
chown vmail:vmail /var/vmail
Сделаем самоподписанные SSL'киmkdir /etc/postfix/certs
openssl req -new -x509 -days 3650 -nodes -out /etc/postfix/certs/cert.pem -keyout /etc/postfix/certs/key.pem
Самый противный этап сборки – убедить Postfix работать с базой данных:mkdir /etc/postfix/mysql
В этой директории создаём файлы со следующим содержанием:Конфигурация postfix mysqlrelay_domains.cf
hosts = localhost
user = postfix
password = mypassword
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '1'

virtual_alias_domain_maps.cf

hosts = localhost
user = postfix
password = mypassword
dbname = postfix
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1

virtual_alias_maps.cf

hosts = localhost
user = postfix
password = mypassword
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'

virtual_mailbox_domains.cf

hosts = localhost
user = postfix
password = mypassword
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' AND active = '1'

virtual_mailbox_maps.cf

hosts = localhost
user = postfix
password = mypassword
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'

Редактируем файл /etc/postfix/main.cf, обучая Postfix работать с базой по свежесозданным файлам:

# ============================================================
# MySQL mappings
# ============================================================
relay_domains = mysql:/etc/postfix/mysql/relay_domains.cf
virtual_alias_maps = mysql:/etc/postfix/mysql/virtual_alias_maps.cf, mysql:/etc/postfix/mysql/virtual_alias_domain_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql/virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql/virtual_mailbox_maps.cf

Хороший почтовый сервер пропускает своих и авторизует чужих. Чтобы аутентификация работала корректно, запустим Submission, подняв SMTP сервис дополнительно на 587 порту.

Смартфоны при создании новых учётных записей при вписывании smtp сервера с аутентификацией по умолчанию предлагают 587 порт; вы же не хотите объяснять клиентам, что недостаточно вписать mail.domain.tld, а ещё надо и порты какие-то прописывать.

В общем, в /etc/postfix/master.cf редактируем секцию, отвечающую за submission:

submission inet n — n — — smtpd -o syslog_name=postfix/submission -o smtpd_tls_wrappermode=no -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject -o smtpd_relay_restrictions=permit_mynetworks,permit_sasl_authenticated,defer_unauth_destination -o milter_macro_daemon_name=ORIGINATING

[!] Обязательно обращаем внимание на пробелы перед -o ключами — без них конфиг не будет валидным.

Пока отложим в сторону master.cf, к нему мы вернёмся позднее, и продолжим с /etc/postfix/main.cf

soft_bounce = no
myhostname = mail.domain.tld
mydomain = domain.tld
myorigin = $myhostname # Убираем $myhostname и $mydomain из локального класа
# Чтобы не было do not list domain in BOTH mydestination and virtual_mailbox_domains
mydestination = localhost.$mydomain, localhost ## Вписываем свои сетки
## Обязательно отредактировать и сузить до максимально узкого диапазона
## Лучше вообще не использовать и не позволять отправку почты без авторизации
mynetworks = 192.168.0.0/16, 127.0.0.0/8 ## Убираем nis:/ чтобы избежать спама в лог ## dict_nis_init: NIS domain name not set — NIS lookups disabled
alias_maps = hash:/etc/aliases smtpd_banner = $myhostname ESMTP $mail_name
debug_peer_level = 2
debug_peer_list = 127.0.0.1

Это были изменения строк по умолчанию. А теперь добавим несколько секций наших настроек. Проверьте на дубликаты, убирая их из родной конфигурации, если они там встречаются. Я предлагаю свои настройки вписывать структурированными блоками в нижней части файла /etc/postfix/main.cf:

Очередная конфигурационная простыня# ============================================================
# RESTRICTIONS
#
# Uncomment reject_rbl_client if necessary
# More information at: http://help.ubuntu.ru/wiki/фильтрация_спама_на_уровне_smtp_протокола
# ============================================================
smtpd_discard_ehlo_keywords = etrn, silent-discard
smtpd_forbidden_commands = CONNECT GET POST
broken_sasl_auth_clients = yes
smtpd_delay_reject = yes
smtpd_helo_required = yes
disable_vrfy_command = yes smtpd_helo_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname smtpd_data_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_pipelining, reject_multi_recipient_bounce, smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_sender, reject_unknown_sender_domain smtpd_recipient_restrictions = reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_multi_recipient_bounce, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_policy_service unix:/var/spool/postfix/postgrey/socket, #reject_rbl_client zen.spamhaus.org, #reject_rbl_client bl.spamcop.net, #reject_rbl_client dnsbl.sorbs.net, reject_invalid_hostname # ============================================================
# TLS
# ============================================================
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
smtp_tls_session_cache_database = btree:$data_directory/smtp_tls_session_cache
smtpd_tls_key_file = /etc/postfix/certs/key.pem
smtpd_tls_cert_file = /etc/postfix/certs/cert.pem
tls_random_source = dev:/dev/urandom # ============================================================
# LIMITS
# ============================================================
message_size_limit = 51200000
smtpd_soft_error_limit = 10
smtpd_hard_error_limit = 15
smtpd_error_sleep_time = 20
anvil_rate_time_unit = 60s
smtpd_client_connection_count_limit = 20
smtpd_client_connection_rate_limit = 30
smtpd_client_message_rate_limit = 30
smtpd_client_event_limit_exceptions = 127.0.0.1/8
smtpd_client_connection_limit_exceptions = 127.0.0.1/8 # ============================================================
# QUEUE
# ============================================================
maximal_queue_lifetime = 1d
bounce_queue_lifetime = 1d

[!] Использовать или не использовать чёрные списки — ваш выбор. Я закомментировал соответствующие директивы reject_rbl_client, чтобы не плодить холивары. Грейлистинга зачастую хватает, а Spamhaus и иже с ним исповедуют неоднозначную политику, но на практике оказалось, что «честных ребят», в чёрные списки просто так не заносит и ложных срабатываний у нас не было. Повезло, наверное. Поэтому — дело вкуса включать директивы RBL или нет. Считайте, что я их указал в информационных целях.
[!] Параметры разбиты по группам — внимательно пересмотрите их и подстройте под собственные нужды. Хуже нет варианта, чем вслепую влепить чужой конфиг без правок.
[!] Malamut справедливо заметил, что опция `permit_mynetworks` крайне сомнительна и опасна. Гораздо лучше будет её убрать и разрешать отправку корреспонденции только пользователям, прошедшим аутентификацию.
[!] К файлу main.cf мы снова вернёмся, добавляя в него postgrey, amavis и dovecot, а пока перейдем к MDAЧто это такое:

  • Это наш Mail Delivery Agent, локальный транспорт
  • Собственный SASL, через который будет работать Postfix
  • Работа с квотами
  • Предоставление пользователю imap и pop3

Пара изменений в /etc/dovecot/dovecot.conf:

protocols = imap pop3
login_greeting = Hello there.
Остальная часть конфигурационного файла удобно разбита на составляющие и прекрасно документирована:10-auth.confdisable_plaintext_auth = no
auth_realms = domain.tld domain2.tld
auth_default_realm = domain.tld
auth_mechanisms = plain login
## [!] Комментируем auth-system.conf.ext, чтобы не ## заставлять dovecot искать пользователя в pam
#!include auth-system.conf.ext

10-logging.confОтдельного перечисления не будет — по желанию включаем нужные опции.

10-mail.confmail_location = maildir:/var/vmail/%d/%n mail_uid = 1000 mail_gid = 1000 mail_plugins = quota
10-master.conf# Поднимаем imap и imaps
service imap-login { inet_listener imap { port = 143 } inet_listener imaps { port = 993 ssl = yes }
} # Поднимаем pop3 и pop3s
service pop3-login { inet_listener pop3 { port = 110 } inet_listener pop3s { port = 995 ssl = yes }
} # Поднимаем SASL, куда будет ходить postfix
service auth { unix_listener auth-userdb { mode = 0600 user = vmail group = vmail } unix_listener /var/spool/postfix/private/auth { mode = 0666 user=postfix group=postfix }
}

10-ssl.confssl = yes ssl_cert =

Источник: https://habr.com/post/193220/

Ссылка на основную публикацию