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/
Добавить комментарий