мета-данные страницы
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| manuals:mail_server_from_scratch [2024/06/24 13:03] – удалено - внешнее изменение (Дата неизвестна) 127.0.0.1 | manuals:mail_server_from_scratch [2024/06/24 13:05] (текущий) – ↷ Операцией перемещения обновлены ссылки Администратор | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | ===== Почтовый сервер с нуля ===== | ||
| + | Разберем настройку на базе операционной системы (далее - ОС) Ubuntu 20.04. <note tip> | ||
| + | |||
| + | ==== Предварительная подготовка ==== | ||
| + | |||
| + | === Обновление ОС === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | |||
| + | === Важно переименовать сервер т.к. многие анти спам системы проверяют, | ||
| + | |||
| + | < | ||
| + | |||
| + | === Настройка синхронизации времени === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | < | ||
| + | |||
| + | === Открываем порты с помощью iptables === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | |||
| + | === Что бы сохранить правила делаем === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | |||
| + | ==== Настройка веб-сервера: | ||
| + | |||
| + | === Устанавливаем apache2 и включаем автозапуск === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | Проверить работу сервера можно перейдя по ссылке [[http:// | ||
| + | |||
| + | Видите эту картинку? | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Значит все супер, движемся дальше. | ||
| + | |||
| + | === Устанавливаем php и php-fpm и делаем автозапуск === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | |||
| + | проверить версию можно так | ||
| + | |||
| + | < | ||
| + | |||
| + | === Ставим доп.компоненты для php === | ||
| + | |||
| + | < | ||
| + | |||
| + | === Для применения перезапускаем === | ||
| + | |||
| + | < | ||
| + | |||
| + | === Чтобы проверить работоспособность php создаем файл === | ||
| + | |||
| + | < | ||
| + | |||
| + | вписываем в файл строку | ||
| + | |||
| + | <?php phpinfo(); ?> | ||
| + | |||
| + | Проверить работу можно перейдя по ссылке [[http:// | ||
| + | |||
| + | Видите эту картинку? | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Значит все супер, движемся дальше. | ||
| + | |||
| + | === Устанавливаем сервер баз данных и делаем автозапуск === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | |||
| + | Задаем пароль для пользователя root: | ||
| + | |||
| + | < | ||
| + | |||
| + | ==== Установка и настройка PostfixAdmin ==== | ||
| + | |||
| + | === Скачиваем PostfixAdmin === | ||
| + | |||
| + | < | ||
| + | |||
| + | === Создать каталог postfixadmin и распаковать в него архив === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | |||
| + | === Создать каталог templates_c внутри папки postfixadmin (нужен для запуска установки) === | ||
| + | |||
| + | < | ||
| + | |||
| + | === Задаем права на каталог === | ||
| + | |||
| + | < | ||
| + | |||
| + | <note tip> | ||
| + | |||
| + | === Создать базу данных postfix и учетную запись === | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | < | ||
| + | < | ||
| + | <note tip> | ||
| + | </ | ||
| + | |||
| + | === Создаем конфигурационный файл postfixadmin === | ||
| + | |||
| + | < | ||
| + | |||
| + | И добавляем туда | ||
| + | < | ||
| + | <?php | ||
| + | |||
| + | $CONF[' | ||
| + | $CONF[' | ||
| + | $CONF[' | ||
| + | $CONF[' | ||
| + | |||
| + | ?> | ||
| + | </ | ||
| + | В браузере вводим адрес http:// | ||
| + | |||
| + | === Задаем пароль установки и генерируем хэш === | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Вставить ее необходимо в файл в самый низ до закрывающей скобки | ||
| + | |||
| + | < | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Перезагружаем страницу http:// | ||
| + | Как вы могли понять, | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Будет выполнена установка PostfixAdmin. | ||
| + | По итогу не должно быть никаких ошибок, | ||
| + | |||
| + | === После успешной установки на экране появится возможность завести суперпользователя === | ||
| + | |||
| + | <note tip> | ||
| + | |||
| + | Админ — root@fellk.ru | ||
| + | |||
| + | Пароль — новый пароль для создаваемой учетной записи | ||
| + | |||
| + | Переходим в браузере на страницу http:// | ||
| + | |||
| + | Вводим логин и пароль только что созданные и попадаем в панель управления.</ | ||
| + | |||
| + | ==== Установка и настройка Postfix ==== | ||
| + | |||
| + | === Ставим программу и зависимости командой === | ||
| + | |||
| + | < | ||
| + | В процессе появится окно «Postfix Configuration» — оставляем Internet Site: | ||
| + | В следующем окне оставляем имя сервера и нажимаем Enter. | ||
| + | |||
| + | === После установки создаем учетную запись, | ||
| + | |||
| + | < | ||
| + | < | ||
| + | |||
| + | === Задаем владельца === | ||
| + | |||
| + | < | ||
| + | |||
| + | === Приводим строки к такому виду === | ||
| + | В файле | ||
| + | < | ||
| + | < | ||
| + | mydestination = localhost.$mydomain, | ||
| + | inet_protocols = ipv4 | ||
| + | smtpd_tls_cert_file = / | ||
| + | smtpd_tls_key_file = / | ||
| + | myhostname = mail.fellk.ru | ||
| + | </ | ||
| + | <note tip> | ||
| + | smtpd_tls_cert_file — путь и названия сертификатов у вас могут отличаться. | ||
| + | |||
| + | smtpd_tls_key_file — путь и названия сертификатов у вас могут отличаться. | ||
| + | </ | ||
| + | |||
| + | === В конец этого же файла допишем следующее === | ||
| + | < | ||
| + | virtual_mailbox_base = /mail | ||
| + | virtual_alias_maps = proxy: | ||
| + | virtual_mailbox_domains = proxy: | ||
| + | virtual_mailbox_maps = proxy: | ||
| + | virtual_minimum_uid = 1024 | ||
| + | virtual_uid_maps = static:1024 | ||
| + | virtual_gid_maps = static:1024 | ||
| + | virtual_transport = dovecot | ||
| + | dovecot_destination_recipient_limit = 1 | ||
| + | |||
| + | smtpd_sasl_auth_enable = yes | ||
| + | smtpd_sasl_exceptions_networks = $mynetworks | ||
| + | smtpd_sasl_security_options = noanonymous | ||
| + | broken_sasl_auth_clients = yes | ||
| + | smtpd_sasl_type = dovecot | ||
| + | smtpd_sasl_path = private/ | ||
| + | |||
| + | smtp_use_tls = yes | ||
| + | smtpd_use_tls = yes | ||
| + | smtpd_tls_auth_only = yes | ||
| + | smtpd_helo_required = yes | ||
| + | </ | ||
| + | |||
| + | === Создать файл с настройками обращения к базе с алиасами === | ||
| + | |||
| + | < | ||
| + | <note tip> | ||
| + | |||
| + | user = root | ||
| + | |||
| + | password = Ваш пароль | ||
| + | |||
| + | hosts = localhost | ||
| + | |||
| + | dbname = fellk | ||
| + | |||
| + | query = SELECT goto FROM alias WHERE address=' | ||
| + | |||
| + | </ | ||
| + | |||
| + | === Создать файл с инструкцией получения данных по виртуальным доменам === | ||
| + | |||
| + | < | ||
| + | |||
| + | <note tip> | ||
| + | |||
| + | user = root | ||
| + | |||
| + | password = Ваш пароль | ||
| + | |||
| + | hosts = localhost | ||
| + | |||
| + | dbname = fellk | ||
| + | |||
| + | query = SELECT domain FROM domain WHERE domain=' | ||
| + | |||
| + | </ | ||
| + | |||
| + | === Файл с почтовыми ящиками === | ||
| + | |||
| + | < | ||
| + | |||
| + | <note tip> | ||
| + | |||
| + | user = root | ||
| + | |||
| + | password = Ваш пароль | ||
| + | |||
| + | hosts = localhost | ||
| + | |||
| + | dbname = fellk | ||
| + | |||
| + | query = SELECT CONCAT(domain,'/', | ||
| + | |||
| + | </ | ||
| + | |||
| + | === Дописать в конце в файле master.cf === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | submission | ||
| + | -o smtpd_tls_security_level=may | ||
| + | -o smtpd_sasl_auth_enable=yes | ||
| + | -o smtpd_sasl_type=dovecot | ||
| + | -o smtpd_sasl_path=/ | ||
| + | -o smtpd_sasl_security_options=noanonymous | ||
| + | -o smtpd_sasl_local_domain=$myhostname | ||
| + | |||
| + | smtps | ||
| + | -o syslog_name=postfix/ | ||
| + | -o smtpd_tls_wrappermode=yes | ||
| + | -o smtpd_sasl_auth_enable=yes | ||
| + | -o smtpd_client_restrictions=permit_sasl_authenticated, | ||
| + | |||
| + | dovecot | ||
| + | flags=DRhu user=mail: | ||
| + | </ | ||
| + | |||
| + | === Генерируем сертификаты безопасности. Либо приобретаем готовые у своего хостинг провайдера === | ||
| + | |||
| + | Создаем папку | ||
| + | |||
| + | < | ||
| + | SSL сертификат куплен у провайдера timeweb за 999 рублей. Готовые файлы поместил в папку / | ||
| + | |||
| + | === Команда для генерации === | ||
| + | |||
| + | < | ||
| + | |||
| + | === Включаем автозапуск postfix и делаем перезагрузку сервиса === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | |||
| + | ==== Настройка Dovecot ==== | ||
| + | |||
| + | === Устанавливаем Dovecot с зависимостями для баз данных === | ||
| + | |||
| + | < | ||
| + | |||
| + | === Меняем способ хранения сообщений === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | |||
| + | === конфигурируем слушателя для аутентификации === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | service auth { | ||
| + | unix_listener / | ||
| + | mode = 0666 | ||
| + | user = postfixmail | ||
| + | group = postfixmail | ||
| + | } | ||
| + | unix_listener auth-userdb { | ||
| + | mode = 0600 | ||
| + | user = mail | ||
| + | group = mail | ||
| + | } | ||
| + | } | ||
| + | |||
| + | service stats { | ||
| + | unix_listener stats-reader { | ||
| + | user = mail | ||
| + | group = mail | ||
| + | mode = 0660 | ||
| + | } | ||
| + | unix_listener stats-writer { | ||
| + | user = mail | ||
| + | group = mail | ||
| + | mode = 0660 | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | === Настройка аутентификации в Dovecot === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | < | ||
| + | |||
| + | === Настройка шифрования === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | |||
| + | === Настройка создания каталогов подключения к почте === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | |||
| + | === Подключение к базе данных === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | passdb { | ||
| + | args = / | ||
| + | } | ||
| + | |||
| + | userdb { | ||
| + | args = / | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | === Редактируем файл работы с базой данных === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | driver = mysql | ||
| + | connect = host=localhost dbname=postfixmail user=postfixmail password=password123456 | ||
| + | default_pass_scheme = MD5-CRYPT | ||
| + | password_query = SELECT password FROM mailbox WHERE username = ' | ||
| + | user_query = SELECT maildir, 1024 AS uid, 1024 AS gid FROM mailbox WHERE username = ' | ||
| + | user_query = SELECT CONCAT('/ | ||
| + | </ | ||
| + | |||
| + | === Настройка слушателя dovecot === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | |||
| + | === Включаем автозапуск dovecot и делаем перезагрузку === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | |||
| + | ==== Проверка почты ==== | ||
| + | |||
| + | В браузере заходим в админку http:// | ||
| + | |||
| + | Переходим в Список доменов и создаем новый домен. | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Далее переходим в Обзор и создаем тестовый ящик. | ||
| + | |||
| + | <note tip> | ||
| + | |||
| + | Сервер: | ||
| + | |||
| + | IMAP: 143 без шифрования или 993 с шифрованием | ||
| + | |||
| + | POP3: 110 без шифрования или 995 с шифрованием | ||
| + | |||
| + | SMTP: 25 без шифрования или 465 с шифрованием</ | ||
| + | |||
| + | ==== Устанавливаем и настраиваем веб клиент Roundcube ==== | ||
| + | |||
| + | <note tip>Вы можете установить себе другой веб клиент например, | ||
| + | </ | ||
| + | |||
| + | === Скачиваем программу === | ||
| + | |||
| + | < | ||
| + | |||
| + | === Создаем папку для размещения пограммы === | ||
| + | |||
| + | < | ||
| + | |||
| + | === Делаем распаковку в эту папку === | ||
| + | |||
| + | < | ||
| + | |||
| + | === Копируем шаблон конфига и редактируем его === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | < | ||
| + | |||
| + | $config[' | ||
| + | |||
| + | $config[' | ||
| + | |||
| + | $config[' | ||
| + | |||
| + | </ | ||
| + | |||
| + | === Прописываем папки в этом же конфиге === | ||
| + | < | ||
| + | |||
| + | $config[' | ||
| + | |||
| + | $config[' | ||
| + | |||
| + | $config[' | ||
| + | |||
| + | $config[' | ||
| + | |||
| + | $config[' | ||
| + | |||
| + | </ | ||
| + | |||
| + | === Задаем владельца apache на папку портала === | ||
| + | |||
| + | < | ||
| + | |||
| + | === Создаем базу roundcubemail === | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | </ | ||
| + | |||
| + | === Прогружаем данные === | ||
| + | |||
| + | < | ||
| + | |||
| + | === Ставим допы для Roundcube === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | |||
| + | === Создать файл настройки === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | |||
| + | === В конфиге php === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | |||
| + | date.timezone = " | ||
| + | |||
| + | post_max_size = 70M | ||
| + | |||
| + | upload_max_filesize = 70M | ||
| + | |||
| + | </ | ||
| + | |||
| + | <note tip>В моем случае разрешение на файлы 70 мегабайт, | ||
| + | |||
| + | === Перезагружаем php-fpm === | ||
| + | |||
| + | < | ||
| + | |||
| + | === Настроим apache2 === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | |||
| + | upload_max_filesize = 70M | ||
| + | |||
| + | post_max_size = 70M | ||
| + | |||
| + | </ | ||
| + | |||
| + | === Перезагружаем apache2 === | ||
| + | |||
| + | < | ||
| + | |||
| + | <note tip>В моем случае разрешение на файлы 70 мегабайт, | ||
| + | |||
| + | Открываем браузер и переходим по адресу http:// | ||
| + | В самом низу нажимаем по кнопке Next. | ||
| + | <note tip> | ||
| + | На следующей странице проверяем, | ||
| + | Установка выполнена. | ||
| + | |||
| + | === Редактируем конфиг roundcube === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | |||
| + | === Удаляем папку с установочными скриптами === | ||
| + | |||
| + | < | ||
| + | |||
| + | И заходим в браузере по адресу http:// | ||
| + | |||
| + | Вводим в качестве логина адрес почты созданного пользователя и его пароль. | ||
| + | |||
| + | Если все прошло успешно, | ||
| + | |||
| + | |||
| + | ==== Установка и настройка Clamav + Amavisd ==== | ||
| + | |||
| + | === Ставим все необходимое === | ||
| + | |||
| + | < | ||
| + | |||
| + | === Добавляем пользователя clamav в группу amavis === | ||
| + | |||
| + | < | ||
| + | |||
| + | === Редактируем конфиг amavis === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | убираем комменты: | ||
| + | < | ||
| + | @bypass_virus_checks_maps = ( | ||
| + | | ||
| + | |||
| + | @bypass_spam_checks_maps = ( | ||
| + | | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | === Далее редактируем === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | Нужно добавить | ||
| + | |||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | === Включаем автозапуск и перезагружаем === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | |||
| + | === Делаем изменения в postfix === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | |||
| + | Так же тут master.cf | ||
| + | |||
| + | < | ||
| + | < | ||
| + | scan | ||
| + | -o smtp_send_xforward_command=yes | ||
| + | -o smtp_enforce_tls=no | ||
| + | |||
| + | 127.0.0.1: | ||
| + | -o content_filter= | ||
| + | -o receive_override_options=no_unknown_recipient_checks, | ||
| + | -o smtpd_helo_restrictions= | ||
| + | -o smtpd_client_restrictions= | ||
| + | -o smtpd_sender_restrictions= | ||
| + | -o smtpd_recipient_restrictions=permit_mynetworks, | ||
| + | -o mynetworks_style=host | ||
| + | -o smtpd_authorized_xforward_hosts=127.0.0.0/ | ||
| + | </ | ||
| + | |||
| + | === Перезапуск postfix === | ||
| + | |||
| + | < | ||
| + | |||
| + | === Включаем автообновление антиспама === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | < | ||
| + | 00 0 * * * / | ||
| + | 00 0 - Время 0 часов 00 минут, вы выставляете нужное вам | ||
| + | </ | ||
| + | |||
| + | ==== Тестируем антиспам ==== | ||
| + | |||
| + | === Содержание в сообщении ниже === | ||
| + | |||
| + | < | ||
| + | |||
| + | Нужно отправить на вашу тестовую почту | ||
| + | Лучше это делать через [[poleznosti: | ||
| + | |||
| + | Письмо не доставится, | ||
| + | < | ||
| + | ... amavis[17688]: | ||
| + | ... relay=127.0.0.1[127.0.0.1]: | ||
| + | </ | ||
| + | |||
| + | === Второй тест контентный === | ||
| + | |||
| + | < | ||
| + | |||
| + | В логах будет | ||
| + | < | ||
| + | ... amavis[17689]: | ||
| + | ... status=sent (250 2.7.0 Ok, discarded, id=17689-04 - spam) | ||
| + | </ | ||
| + | |||
| + | ==== Отдельные ящики для спама и вирусов ==== | ||
| + | |||
| + | === В конфиге === | ||
| + | |||
| + | < | ||
| + | прописываем: | ||
| + | < | ||
| + | |||
| + | $spam_quarantine_to = " | ||
| + | |||
| + | $virus_quarantine_to = " | ||
| + | |||
| + | </ | ||
| + | |||
| + | === Перезапуск amavis === | ||
| + | |||
| + | < | ||
| + | |||
| + | <note important> | ||
| + | Но предварительно у вас должны быть созданы эти почтовые ящики.</ | ||
| + | |||
| + | ==== Антиспам Postfix ==== | ||
| + | |||
| + | === В конфиге main.cf === | ||
| + | |||
| + | < | ||
| + | |||
| + | Комментируем строку | ||
| + | |||
| + | < | ||
| + | |||
| + | === Вписываем === | ||
| + | < | ||
| + | |||
| + | smtpd_client_restrictions = | ||
| + | # | ||
| + | permit_mynetworks | ||
| + | # | ||
| + | permit_sasl_authenticated | ||
| + | # | ||
| + | reject_unauth_pipelining | ||
| + | # | ||
| + | permit | ||
| + | |||
| + | smtpd_helo_restrictions = | ||
| + | # | ||
| + | permit | ||
| + | |||
| + | smtpd_sender_restrictions = | ||
| + | # | ||
| + | permit_mynetworks | ||
| + | # | ||
| + | permit_sasl_authenticated | ||
| + | reject_non_fqdn_sender | ||
| + | reject_unknown_sender_domain | ||
| + | # | ||
| + | permit | ||
| + | |||
| + | smtpd_relay_restrictions = | ||
| + | # | ||
| + | permit_mynetworks | ||
| + | # | ||
| + | permit_sasl_authenticated | ||
| + | defer_unauth_destination | ||
| + | |||
| + | smtpd_recipient_restrictions = | ||
| + | # | ||
| + | permit_mynetworks | ||
| + | # | ||
| + | permit_sasl_authenticated | ||
| + | # | ||
| + | reject_non_fqdn_recipient | ||
| + | # | ||
| + | reject_unauth_destination | ||
| + | # | ||
| + | reject_unknown_recipient_domain | ||
| + | # | ||
| + | reject_unverified_recipient | ||
| + | # | ||
| + | reject_unknown_client_hostname | ||
| + | # | ||
| + | | ||
| + | # | ||
| + | reject_non_fqdn_helo_hostname | ||
| + | # | ||
| + | reject_unknown_helo_hostname | ||
| + | ###### | ||
| + | reject_rbl_client zombie.dnsbl.sorbs.net, | ||
| + | reject_rbl_client work.rsbs.express.ru, | ||
| + | reject_rhsbl_sender dsn.rfc-ignorant.org | ||
| + | ## | ||
| + | ## | ||
| + | ## | ||
| + | ## | ||
| + | ## | ||
| + | ## | ||
| + | ## | ||
| + | |||
| + | # | ||
| + | check_sender_access hash:/ | ||
| + | # | ||
| + | permit | ||
| + | |||
| + | </ | ||
| + | |||
| + | === Перезагрузка Postfix === | ||
| + | |||
| + | < | ||
| + | |||
| + | ==== Обучение антиспама ==== | ||
| + | |||
| + | < | ||
| + | <note tip> | ||
| + | |||
| + | === Убрать некорректные срабатывания можно так === | ||
| + | |||
| + | < | ||
| + | |||
| + | === Статистика по обучению спама === | ||
| + | |||
| + | < | ||
| + | |||
| + | ==== Выводим почту во внешку ==== | ||
| + | |||
| + | === rDNS === | ||
| + | |||
| + | <note tip> | ||
| + | |||
| + | < | ||
| + | или | ||
| + | < | ||
| + | |||
| + | === А-запись === | ||
| + | |||
| + | Настраивается на вашем хостинге. Выглядит так | ||
| + | |||
| + | {{: | ||
| + | |||
| + | === SPF запись === | ||
| + | |||
| + | Настраивается на вашем хостинге. Выглядит так | ||
| + | |||
| + | {{: | ||
| + | |||
| + | === DMARC запись === | ||
| + | |||
| + | Настраивается на вашем хостинге. Выглядит так | ||
| + | |||
| + | {{: | ||
| + | |||
| + | === DKIM запись === | ||
| + | |||
| + | Создать папку для ключей | ||
| + | |||
| + | < | ||
| + | |||
| + | === Генерируем последовательность === | ||
| + | |||
| + | < | ||
| + | |||
| + | === Ставим нужные права === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | |||
| + | === В конфиге amavisd редактируем === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | # | ||
| + | $inet_socket_port = [10024, | ||
| + | |||
| + | $forward_method = ' | ||
| + | $notify_method = $forward_method; | ||
| + | $interface_policy{' | ||
| + | $policy_bank{' | ||
| + | originating => 1, | ||
| + | smtpd_discard_ehlo_keywords => [' | ||
| + | os_fingerprint_method => undef, | ||
| + | bypass_banned_checks_maps => [1], | ||
| + | bypass_header_checks_maps => [1], | ||
| + | bypass_banned_checks_maps => [1], | ||
| + | virus_admin_maps => [" | ||
| + | }; | ||
| + | </ | ||
| + | |||
| + | === В файле 50-user добавляем === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | $enable_dkim_verification = 1; | ||
| + | $enable_dkim_signing = 1; | ||
| + | dkim_key(' | ||
| + | @dkim_signature_options_bysender_maps = ( { | ||
| + | " | ||
| + | }); | ||
| + | </ | ||
| + | |||
| + | === Перезапускаем amavis === | ||
| + | |||
| + | < | ||
| + | |||
| + | === Проверить DKIM последовательность для домена можно так === | ||
| + | |||
| + | < | ||
| + | |||
| + | === будет что-то вроде этого === | ||
| + | < | ||
| + | ; key#1 1024 bits, i=dkim, d=fellk.ru, / | ||
| + | dkim._domainkey.fellk.ru. | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | </ | ||
| + | Теперь нужно на хостинге прописать эти данные. Выглядит так | ||
| + | |||
| + | {{: | ||
| + | |||
| + | === Проверяем настройки DKIM === | ||
| + | |||
| + | < | ||
| + | |||
| + | === Донастраиваем postfix === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | smtp inet n | ||
| + | -o content_filter=scan: | ||
| + | |||
| + | submission | ||
| + | -o content_filter=scan: | ||
| + | |||
| + | smtps | ||
| + | -o content_filter=scan: | ||
| + | |||
| + | 127.0.0.1: | ||
| + | -o content_filter= | ||
| + | -o receive_override_options=no_unknown_recipient_checks, | ||
| + | -o smtpd_helo_restrictions= | ||
| + | -o smtpd_client_restrictions= | ||
| + | -o smtpd_sender_restrictions= | ||
| + | -o smtpd_recipient_restrictions=permit_mynetworks, | ||
| + | -o mynetworks_style=host | ||
| + | -o smtpd_authorized_xforward_hosts=127.0.0.0/ | ||
| + | </ | ||
| + | |||
| + | === Перезапускаем postfix === | ||
| + | |||
| + | < | ||
| + | |||
| + | === Настраиваем Roundcube === | ||
| + | |||
| + | < | ||
| + | |||
| + | Строки | ||
| + | < | ||
| + | $config[' | ||
| + | $config[' | ||
| + | </ | ||
| + | |||
| + | заменить на | ||
| + | < | ||
| + | $config[' | ||
| + | $config[' | ||
| + | </ | ||
| + | |||
| + | <note tip> | ||
| + | |||
| + | https:// | ||
| + | </ | ||
| + | |||
| + | ==== Настройка квот почты ==== | ||
| + | |||
| + | === В файле10-mail.conf === | ||
| + | |||
| + | < | ||
| + | |||
| + | снимаем коммент или прописываем строку | ||
| + | |||
| + | < | ||
| + | |||
| + | === В файле 20-imap.conf === | ||
| + | |||
| + | < | ||
| + | |||
| + | Снимаем комментарий или прописываем строку | ||
| + | < | ||
| + | protocol imap { | ||
| + | mail_plugins = $mail_plugins imap_quota | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | === В файле 10-master.conf === | ||
| + | |||
| + | < | ||
| + | |||
| + | редактируем строки как показано ниже | ||
| + | < | ||
| + | service dict { | ||
| + | unix_listener dict { | ||
| + | mode = 0660 | ||
| + | user = mail | ||
| + | group = mail | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | <note tip>user и group - это все те же что создавались ранее вами</ | ||
| + | |||
| + | === В файле 90-quota.conf === | ||
| + | |||
| + | < | ||
| + | |||
| + | Добавляем строки или убираем коммент с них | ||
| + | < | ||
| + | plugin { | ||
| + | quota = dict:User quota:: | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | === В файле dovecot.conf === | ||
| + | |||
| + | < | ||
| + | |||
| + | Убираем коммент или добавляем строки | ||
| + | < | ||
| + | dict { | ||
| + | quota = mysql:/ | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | === В файле dovecot-dict-sql.conf.ext === | ||
| + | |||
| + | < | ||
| + | |||
| + | Прописываем настройки | ||
| + | |||
| + | < | ||
| + | connect = host=localhost dbname=fellk user=root password=Ваш пароль | ||
| + | map { | ||
| + | pattern = priv/ | ||
| + | table = quota2 | ||
| + | username_field = username | ||
| + | value_field = bytes | ||
| + | } | ||
| + | map { | ||
| + | pattern = priv/ | ||
| + | table = quota2 | ||
| + | username_field = username | ||
| + | value_field = messages | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | === Редактируем или дописываем в файле dovecot-sql.conf.ext === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | user_query = SELECT CONCAT('/ | ||
| + | </ | ||
| + | |||
| + | === Проверяем конфигурационный файл dovecot === | ||
| + | |||
| + | < | ||
| + | |||
| + | === если нет ошибок, | ||
| + | |||
| + | < | ||
| + | |||
| + | ==== Проверка работы квот ==== | ||
| + | |||
| + | === Для проверки используем команду === | ||
| + | |||
| + | < | ||
| + | |||
| + | Прописывать квоты нужно в веб интерфейсе в каждый почтовый ящик | ||
| + | |||
| + | {{: | ||
| + | |||
| + | ==== Информирование при превышении квот ==== | ||
| + | |||
| + | === В файле 90-quota.conf === | ||
| + | |||
| + | < | ||
| + | |||
| + | Редактируем строки | ||
| + | < | ||
| + | plugin { | ||
| + | quota_warning = storage=95%% quota-warning 95 %u | ||
| + | quota_warning2 = storage=80%% quota-warning 80 %u | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <note tip> | ||
| + | |||
| + | В разделе service quota-warning редактируем все как ниже | ||
| + | < | ||
| + | service quota-warning { | ||
| + | executable = script / | ||
| + | user = dovecot | ||
| + | unix_listener quota-warning { | ||
| + | user = mail | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | === Скрипт оповещения quota-warning.sh === | ||
| + | |||
| + | < | ||
| + | < | ||
| + | cat << EOF | / | ||
| + | Content-Type: | ||
| + | From: Администратор почты < | ||
| + | Subject: Предупреждение о превышении квоты на почтовый ящик | ||
| + | X-Priority: 2 | ||
| + | |||
| + | < | ||
| + | Удалите большие письма с вложениями, | ||
| + | EOF | ||
| + | </ | ||
| + | |||
| + | === Прописываем права на файл === | ||
| + | |||
| + | < | ||
| + | |||
| + | === Тестируем скрипт === | ||
| + | |||
| + | < | ||
| + | |||
| + | === Рестарт dovecot === | ||
| + | |||
| + | < | ||
| + | |||
| + | ==== Для Outlook переводим папки на русский ==== | ||
| + | |||
| + | === Редактируем файл 15-mailboxes.conf === | ||
| + | |||
| + | < | ||
| + | |||
| + | В блоке namespace inbox редактируем | ||
| + | < | ||
| + | namespace inbox { | ||
| + | mailbox Черновики { | ||
| + | auto = subscribe | ||
| + | special_use = \Drafts | ||
| + | } | ||
| + | mailbox Drafts { | ||
| + | auto = no | ||
| + | special_use = \Drafts | ||
| + | } | ||
| + | mailbox Спам { | ||
| + | auto = subscribe | ||
| + | special_use = \Junk | ||
| + | } | ||
| + | mailbox Junk { | ||
| + | auto = no | ||
| + | special_use = \Junk | ||
| + | } | ||
| + | mailbox Spam { | ||
| + | auto = no | ||
| + | special_use = \Junk | ||
| + | } | ||
| + | mailbox "Junk E-mail" | ||
| + | auto = no | ||
| + | special_use = \Junk | ||
| + | } | ||
| + | mailbox Удаленные { | ||
| + | auto = subscribe | ||
| + | special_use = \Trash | ||
| + | } | ||
| + | mailbox Trash { | ||
| + | auto = no | ||
| + | special_use = \Trash | ||
| + | } | ||
| + | mailbox " | ||
| + | auto = no | ||
| + | special_use = \Trash | ||
| + | } | ||
| + | mailbox Отправленные { | ||
| + | auto = subscribe | ||
| + | special_use = \Sent | ||
| + | } | ||
| + | mailbox Sent { | ||
| + | auto = no | ||
| + | special_use = \Sent | ||
| + | } | ||
| + | mailbox "Sent Messages" | ||
| + | auto = no | ||
| + | special_use = \Sent | ||
| + | } | ||
| + | mailbox "Sent Items" { | ||
| + | auto = no | ||
| + | special_use = \Sent | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <note tip> | ||
| + | </ | ||
| + | |||
| + | === Для применения настроек перезапускаем dovecot === | ||
| + | |||
| + | < | ||
| + | |||
| + | ==== Настройка ограничения вложений ==== | ||
| + | |||
| + | === Начнем с файла === | ||
| + | |||
| + | < | ||
| + | |||
| + | Размер почтового ящика | ||
| + | Для установки квоты на почтовые ящики редактируем следующее | ||
| + | < | ||
| + | mailbox_size_limit = 734003200 | ||
| + | virtual_mailbox_limit = 734003200 | ||
| + | message_size_limit = 73400320 | ||
| + | </ | ||
| + | <note tip>Я ставлю 70 МБ - в файле это выглядит все в байтах как 734003200 | ||
| + | </ | ||
| + | < | ||
| + | Если не нужны ограничения, | ||
| + | </ | ||
| + | |||
| + | === После редактирования применяем изменения === | ||
| + | |||
| + | < | ||
| + | |||
| + | Далее в файле: | ||
| + | |||
| + | < | ||
| + | |||
| + | Находим и редактируем | ||
| + | < | ||
| + | post_max_size = 70M | ||
| + | |||
| + | upload_max_filesize = 70M | ||
| + | </ | ||
| + | |||
| + | === И не забываем о перезапуске === | ||
| + | |||
| + | < | ||
| + | |||
| + | ==== Возможные ошибки и их решения ==== | ||
| + | |||
| + | {{: | ||
| + | |||
| + | решается данная проблема одной-двумя командами, | ||
| + | |||
| + | < | ||
| + | < | ||
| + | |||
| + | === Если не отправляются вложения из веб интерфейса Roundcube === | ||
| + | |||
| + | Нужно отредактировать конфиг | ||
| + | |||
| + | < | ||
| + | |||
| + | добавив в него строку | ||
| + | < | ||
| + | $config[' | ||
| + | </ | ||