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
Автор: redbutcold