PostfixАdmin revamped (ViMbAdmin)

от автора

ViMbAdmin

ViMbAdmin проект (vim/-be/-admin/) предоставляет веб-интерфейс администрирования виртуальных
почтовых ящиков, позволяя почтовым администраторам легко управлять доменами, и псевдонимами.
ViMbAdmin является свободным программным обеспечением, вы можете распространять или изменять его в соответствии с условиями GNU General Public License версии 3.

ViMbAdmin был написан на PHP с использованием нашего собственного web application framework, который включает Zend Framework, ORM Doctrina и система шаблонов Smarty с JQuery и Bootstrap.

ViMbAdmin размещается на отдельной странице проекта GitHub, где можно найти документацию,
просмотреть исходный код. GitHub

Стандартные и расширенные возможности от PostfixAdmin включают в себя:

— Супер-администратор с полным доступом;
— Администраторы имеющие доступ только к установленному домену и их почтовым ящикам и псевдонимам;
— Супер-администраторы могут создавать и изменять супер администраторов и администраторов;
— JQuery Datatable для быстрого поиска в браузере и нумерация страниц;
— Создание, изменение и удаление;
— Включение / выключение администраторов, доменов, почтовых ящиков и псевдонимов по нажатию одной кнопки;
— Полное логирование событий;
— Интерфейс для пользователей (владельцев почтовых ящиков), чтобы изменить свой пароль;

Дополнительные функции включают в себя:

— значения по умолчанию для квоты, количество почтовых ящиков и псевдонимов для создания домена;
— добавлены дополнительные столбцы в схему почтовых ящиков (в том числе UID, GID, домашний каталог и Maildir);
— шаблоны писем приветствия и настроек для пользователей;
— Поддержка на выбор plain или hashed или salted пароль почтового ящика;
— Таблицы паролей Администраторов с salted SHA;
— Password Reset функции для администраторов и почтовых ящиков;

инструкция по установке ViMbAdmin

github.com/opensolutions/ViMbAdmin/wiki/Installation-instructions

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

Устанавливаем CentALT + EPEL репозитории:

rpm -Uhv http://centos.alt.ru/pub/repository/centos/6/x86_64/centalt-release-6-1.noarch.rpm rpm -Uhv http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm 

устанавливаем почтовые программы:

yum install postfix dovecot dovecot-pigeonhole 

Создаем пользователя и группу, которые будут отвечать за почтовые ящики:

groupadd -g 5000 vmail useradd -g vmail -u 5000 vmail -d /home/vmail -m 

Создаем директорию, в которой будут храниться настройки подключения к MySQL:

mkdir /etc/postfix/mysql touch /etc/postfix/mysql/virtual-alias-maps.cf 

user = vimbadmin password = password hosts = 127.0.0.1 dbname = vimbadmin query = SELECT goto FROM alias WHERE address = '%s' AND active = '1' 
touch /etc/postfix/mysql/virtual-mailbox-domains.cf 

user = vimbadmin password = password hosts = 127.0.0.1 dbname = vimbadmin query = SELECT domain FROM domain WHERE domain = '%s' AND backupmx = '0' AND active = '1' 
touch /etc/postfix/mysql/virtual-mailbox-maps.cf 

user = vimbadmin password = password hosts = 127.0.0.1 dbname = vimbadmin query = SELECT maildir FROM mailbox WHERE username = '%s' AND active = '1' 

Приступаем к редактированию /etc/dovecot/dovecot.conf:

# 2.0.21: /etc/dovecot/dovecot.conf auth_mechanisms = plain login disable_plaintext_auth = no log_timestamp = "%Y-%m-%d %H:%M:%S " mail_location = maildir:/home/vmail/%d/%n mail_privileged_group = mail managesieve_notify_capability = mailto managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date ihave namespace {   inbox = yes   location =   prefix =   type = private } passdb {   driver = pam } passdb {   args = /etc/dovecot/dovecot-sql.conf   driver = sql } protocols = imap pop3 service auth {   unix_listener /var/spool/postfix/private/auth {     group = postfix     mode = 0660     user = postfix   }   unix_listener auth-master {     mode = 0600     user = vmail   }   user = root } userdb {   driver = passwd } userdb {   args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes   driver = static } protocol pop3 {   pop3_uidl_format = %08Xu%08Xv } protocol lda {   auth_socket_path = /var/run/dovecot/auth-master   log_path = /home/vmail/dovecot-deliver.log   postmaster_address = postmaster@myserver.com }  

Также отредактируем /etc/dovecot/dovecot-sql.conf:

driver = mysql connect = host=127.0.0.1 dbname=vimbadmin user=vimbadmin password=password default_pass_scheme = PLAIN-MD5 password_query = SELECT username as user, password FROM mailbox WHERE username = '%u' 

Переходим к настройке Postfix.
/etc/postfix/main.cf

# Директория с дополнительными файлами конфигурации additional_config_dir = /etc/postfix/config # Сообщение, которое будет появляться при входе на наш SMTP smtpd_banner = $myhostname ESMTP Xbox # Не использовать biff программу, которая  # позволяет пользователям узнать, что им пришла почта. biff = no # Appending .domain is the MUA's job. append_dot_mydomain = no # Документация readme_directory = /usr/share/doc/postfix  # TLS parameters # Расположение файла сертификата сервера smtpd_tls_cert_file = /etc/ssl/certs/postfix.pem # Расположение файла ключа сервера smtpd_tls_key_file = /etc/ssl/private/postfix.pem # Сообщать ли клиентам о возможности использования TLS smtpd_use_tls = yes smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache  # Соответствует полному доменному имени (FQDN) myhostname = mail.server.com # Список доменов, для которых почта будет доставляться локально, а не # пересылаться на другой хост mydestination = $myhostname, localhost, localhost.$mydomain, $myhostname.$mydomain # Доверенные сети mynetworks = 127.0.0.0/8 alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname mailbox_command = procmail -a "$EXTENSION" # Размер почтового ящика в байтах. Если 0 - неограничено mailbox_size_limit = 0 # Сетевые интерфейсы, на которых будет работать Postfix inet_interfaces = all # Документация в html html_directory = /usr/share/doc/postfix/html # Требуем, чтобы удаленный SMTP клиент представлял себя в начале SMTP сессии # с помощью команды HELO или EHLO smtpd_helo_required = yes # Всегда отправлять EHLO вначале SMTP сессии smtp_always_send_ehlo = yes # Отключает SMTP команду VRFY. В результате чего, невозможно определить # существование определенного ящика. Данная техника (применение команды VRFY) # используется спамерами для сбора имен почтовых ящиков disable_vrfy_command = yes # Поддержки старых версий почтовых клиентов, например Microsoft Outlook Express 4 # и Microsoft Exchange 5, использующих другую форму команды AUTH broken_sasl_auth_clients = yes # Содержит имена обслуживаемых доменов virtual_mailbox_domains = mysql:/etc/postfix/mysql/virtual-mailbox-domains.cf # Карта расположения почтовых ящиков virtual_mailbox_maps = mysql:/etc/postfix/mysql/virtual-mailbox-maps.cf # Карта алиасов virtual_alias_maps = mysql:/etc/postfix/mysql/virtual-alias-maps.cf # Карта UID-ов виртуальных пользователей virtual_uid_maps = static:5000 # Карта GID-ов виртуальных пользователей virtual_gid_maps = static:5000 virtual_transport = dovecot # Поддержку sasl авторизации smtpd_sasl_auth_enable = yes # Тип sasl авторизации smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth dovecot_destination_recipient_limit = 1  # Ограничения smtpd_restriction_classes =                              verify_sender,                             rbl_cbl_abuseat_org,                             rbl_sbl_spamhaus_org,                             rbl_dul_ru, rbl_spamcop,                             white_client_ip,                             black_client_ip,                             block_dsl,                             helo_access,                             white_client,                             black_client,                             mx_access  # Описание классов: verify_sender        = reject_unverified_sender, permit  rbl_cbl_abuseat_org  = reject_rbl_client cbl.abuseat.org rbl_dul_ru           = reject_rbl_client dul.ru rbl_sbl_spamhaus_org = reject_rbl_client sbl.spamhaus.org rbl_spamcop          = reject_rbl_client bl.spamcop.net # IP адреса, которые нужно пропускать, не смотря ни на что white_client_ip      = check_client_access pcre:$additional_config_dir/white_client_ip # IP адреса, которые нужно блокировать не смотря ни на что black_client_ip      = check_client_access pcre:$additional_config_dir/black_client_ip # E-mail, которые нужно пропускать не смотря ни на что white_client         = check_sender_access pcre:$additional_config_dir/white_client # E-mail, которые нужно блокировать не смотря ни на что black_client         = check_sender_access pcre:$additional_config_dir/black_client # Правила для блокировки dsl/модемных пулов, с которых подключаются клиенты. block_dsl            = regexp:$additional_config_dir/block_dsl # Соблюдение документа RFC 2821 helo_access          = check_helo_access pcre:$additional_config_dir/helo_checks # Содержит список приватных сетей, которые по всем канонам глобальной сети интернет # не могут быть использованы в качестве IP для MX записей mx_access            = check_sender_mx_access cidr:$additional_config_dir/mx_access  # Далее restrictions  # Проверки клиентского компьютера (или другого почтового сервера), # который соединяется с сервером postfix для отправки письма smtpd_client_restrictions =                              white_client_ip,                             black_client_ip,                             white_client,                             black_client,                             helo_access,                             block_dsl,                             rbl_dul_ru,                             rbl_sbl_spamhaus_org,                             rbl_spamcop,                             rbl_cbl_abuseat_org                             # Принимать письма от клиентов локальной сети                             permit_mynetworks,                             # Пропускать письма от авторизованных пользователей                             permit_sasl_authenticated,                             # Если клиент не из mynetworks оценивает                             # reject_unauth_destination. Отклоняется попытки пересылки,                             # если получатель сообщения не относится к доменам места                             # назначения и доменам пересылки, указанным в ваших настройках                             reject_unauth_destination,                             # Отвергает запрос, когда клиент отправляет команды SMTP                             # раньше времени, еще не зная, поддерживает ли Postfix конвейерную                             # обработку команд ESMTP                             reject_unauth_pipelining,                             # Блокируем клиентов с адресами from, домены которых                             # не имеют A/MX записей                             reject_unknown_address,                             # Блокирует почту от несуществующих доменов                             reject_unknown_recipient_domain,                             # Проверяем домен на записи типа A и MX в DNS.                             # Если нет, то отклоняем                             reject_unknown_sender_domain  # Проверки исходящей или пересылаемой через нас почты smtpd_sender_restrictions =                              white_client,                             white_client_ip,                             black_client_ip,                             # Отклоняет сообщения в не существующие домены                             reject_unknown_recipient_domain,                             reject_unknown_sender_domain,                             # Если имя получателя не соответствует FQDN то отклоняем                             reject_non_fqdn_recipient,                             # Если имя отправителя не соответствует FQDN - отклоняем                             reject_non_fqdn_sender,                             permit_sasl_authenticated,                             permit_mynetworks,                             mx_access,                             # Отклонение писем с несуществующим адресом отправителя                             reject_unlisted_sender,                             reject_unauth_destination  # Правила приема почты нашим сервером smtpd_recipient_restrictions =                                 verify_sender                                white_client,                                helo_access,                                reject_unknown_recipient_domain,                                reject_unknown_sender_domain,                                reject_non_fqdn_recipient,                                reject_non_fqdn_sender,                                reject_unauth_pipelining,                                permit_sasl_authenticated,                                permit_mynetworks,                                reject_unlisted_recipient,                                reject_unknown_address,                                reject_unauth_destination,                                # Отказ в приеме сообщениям с пустым именем отправителя                                # конверта, предназначенным нескольким получателям                                reject_multi_recipient_bounce  smtpd_data_restrictions =                            reject_unauth_pipelining,                           reject_multi_recipient_bounce,                           permit  # Пропустить серверы, которые приветствуют нас кодом состояния 5xx smtp_skip_5xx_greeting = no smtpd_reject_unlisted_sender = yes # Отклонение писем с несуществующим адресом получателя smtpd_reject_unlisted_recipient = yes 

Теперь в конец файла /etc/postfix/master.cf добавляем:

dovecot   unix  -       n       n       -       -       pipe   flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient} 
mkdir /etc/postfix/config touch /etc/postfix/config/black_client touch /etc/postfix/config/black_client_ip touch /etc/postfix/config/block_dsl touch /etc/postfix/config/helo_checks touch /etc/postfix/config/mx_access touch /etc/postfix/config/white_client touch /etc/postfix/config/white_client_ip 

Редактируем /etc/postfix/config/black_client:

#Значение                #Команда      #Сообщение при reject'е # Отбрасывать все письма с ящиков mail.ru #/^.*\@mail\.ru$/        REJECT        Your e-mail was banned! 

Редактируем /etc/postfix/config/black_client_ip:

#Значение                #Команда      #Сообщение при reject'е # Забанить IP (в данном примере 123.45.67.89) #/123\.45\.67\.89/       REJECT        Your IP was banned! # Забанить подсеть (в данном примере 123.45.0-255.0-255) #/123\.45/               REJECT        Your IP-range was banned! # Забанить домен (в данном примере xyz.ua) #/xyz\.ua/               REJECT        Your Domain was banned! # Забанить домен (в данном примере cc.zxc.ua) #cc\.zxc\.ua/            REJECT        Your Domain was banned! 

Редактируем /etc/postfix/config/block_dsl:

/^dsl.*\..*/i                   553 AUTO_DSL We aren't accept direct connection not from dedicated SMTP servers. Please use your internet provider SMTP Server. /.*\.dsl\..*/i                  553 AUTO_DSL2 We aren't accept direct connection not from dedicated SMTP servers. Please use your internet provider SMTP Server. /[a|x]dsl.*\..*\..*/i           553 AUTO_[A|X]DSL We aren't accept direct connection not from dedicated SMTP servers. Please use your internet provider SMTP Server. /client.*\..*\..*/i             553 AUTO_CLIENT We aren't accept direct connection not from dedicated SMTP servers. Please use your internet provider SMTP Server. /cable.*\..*\..*/i              553 AUTO_CABLE We aren't accept direct connection not from dedicated SMTP servers. Please use your internet provider SMTP Server. /pool\..*/i                     553 AUTO_POOL We aren't accept direct connection not from dedicated SMTP servers. Please use your internet provider SMTP Server. /.*dial(\.|-).*\..*\..*/i       553 AUTO_DIAL We aren't accept direct connection not from dedicated SMTP servers. Please use your internet provider SMTP Server. /ppp.*\..*/i                    553 AUTO_PPP We aren't accept direct connection not from dedicated SMTP servers. Please use your internet provider SMTP Server. /dslam.*\..*\..*/i              553 AUTO_DSLAM We aren't accept direct connection not from dedicated SMTP servers. Please use your internet provider SMTP Server. /dslb.*\..*\..*/i               553 AUTO_DSLB We aren't accept direct connection not from dedicated SMTP servers. Please use your internet provider SMTP Server. /node.*\..*\..*/i               553 AUTO_NODE We aren't accept direct connection not from dedicated SMTP servers. Please use your internet provider SMTP Server. /.*\.dynamicIP\..*/i            553 AUTO_DYNAMIC We aren't accept direct connection not from dedicated SMTP servers. Please use your internet provider SMTP Server. /[ax]dsl.*\..*\..*/i            REJECT Your message looks like SPAM 01 /\.dsl.*\..*\..*/i              REJECT Your message looks like SPAM 02 /cable.*\..*\..*/i              REJECT Your message looks like SPAM 03 /client.*\..*\..*/i             REJECT Your message looks like SPAM 04 /dhcp.*\..*\..*/i               REJECT Your message looks like SPAM 05 /dial.*\..*\..*/i               REJECT Your message looks like SPAM 06 /dialup.*\..*\..*/i             REJECT Your message looks like SPAM 07 /dslam.*\..*\..*/i              REJECT Your message looks like SPAM 08 /node.*\..*\..*/i               REJECT Your message looks like SPAM 09 /pool.*\..*\..*/i               REJECT Your message looks like SPAM 10 /ppp.*\..*\..*/i                REJECT Your message looks like SPAM 11 /user.*\..*\..*/i               REJECT Your message looks like SPAM 12 /[0-9]+-[0-9]+/                 REJECT Invalid hostname (D-D) (dsl) /(modem|dia(l|lup)|cp[ce]|dsl|p[cp]p|cable|catv|poo(l|les)|pppoe|dhcp|client|customer|user|host|[0-9]{4,})(-|_|\.|[0-9])/ REJECT Invalid hostname (client) 

Редактируем /etc/postfix/config/helo_checks:

/^\[?10\.\d{1,3}\.\d{1,3}\.\d{1,3}\]?$/ REJECT Address in RFC 1918 private network /^\[?192\.\d{1,3}\.\d{1,3}\.\d{1,3}\]?$/ REJECT Address in RFC 1918 private network /^\[?172\.\d{1,3}\.\d{1,3}\.\d{1,3}\]?$/ REJECT Address in RFC 1918 private network /\d{2,}[-\.]+\d{2,}/ REJECT Invalid hostname (D-D) /^(((newm|em|gm|m)ail|yandex|rambler|hotbox|chat|rbc|subscribe|spbnit)\.ru)$/ REJECT Faked hostname ($1) /^(((hotmail|mcim|newm|em)ail|post|hotbox|msn|microsoft|aol|news|compuserve|yahoo|google|earthlink|netscape)\.(com|net))$/ REJECT Faked hostname ($1) /[^[] *[0-9]+((\.|-|_)[0-9]+){3}/ REJECT Invalid hostname (ipable) /(modem|dia(l|lup)|cp[ce]|dsl|p[cp]p|cable|catv|poo(l|les)|pppoe|dhcp|client|customer|user|host|[0-9]{4,})(-|_|\.|[0-9])/ REJECT Invalid hostname (client) 

Редактируем /etc/postfix/config/mx_access

127.0.0.1      DUNNO  127.0.0.2      550 Domains not registered properly 0.0.0.0/8      REJECT Domain MX in broadcast network  10.0.0.0/8     REJECT Domain MX in RFC 1918 private network  127.0.0.0/8    REJECT Domain MX in loopback network  169.254.0.0/16 REJECT Domain MX in link local network  172.16.0.0/12  REJECT Domain MX in RFC 1918 private network  192.0.2.0/24   REJECT Domain MX in TEST-NET network  192.168.0.0/16 REJECT Domain MX in RFC 1918 private network  224.0.0.0/4    REJECT Domain MX in class D multicast network  240.0.0.0/5    REJECT Domain MX in class E reserved network  248.0.0.0/5    REJECT Domain MX in reserved network 

Редактируем /etc/postfix/config/white_client:

# Принимать все письма c ящиков mail.ru #/^.*\@mail\.ru$/        PERMIT 

Редактируем /etc/postfix/config/white_client_ip:

# Принимать письма с SMTP-сервера 91.214.209.5 #/91\.214\.209\.5/        PERMIT 

Открываем лог и смотрим чтобы небыло ошибок:

tail -f /var/log/mail.log 

И запускаем почтовэ сервисы:

/etc/init.d/dovecot restart /etc/init.d/postfix restart 

©
debian.asy.org.ua/5-postfix-postfixadmin-dovecot-ssl-roundcube.html
www.opensolutions.ie/open-source/vimbadmin

ссылка на оригинал статьи http://habrahabr.ru/post/166487/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *