Установка почтового сервера iRedMail. Внедрение и поддержка (MySQL back-end)

46
51

Iredmail (debian+dovecot+postfix)iRedMail — это готовое решение по организации почтового сервера на базе Linux. В сборку входят такие пакеты как Postfix+Dovecot+LDAP, MySQL или PostreSQL back-end на выбор)+SpamAssassin+ClamAV+AmaViS+RoundCube . Более подробно о компонентах и их функциях:

— Postfix — агент передачи почты (MTA — Mail transfer agent) предоставляет SMTP сервис;
— Dovecot (MDA/LDA) — свободный и очень безопасный POP3/POP3S и IMAP/IMAPS сервер, служит для получения почты. Использует Sieve для фильтрации почтовых сообщей;
— MySQL — служит для хранения данных приложений и пользовательских учетных записей, управляется при помощи консоли или phpmyadmin;
— OpenLDAP — служит для хранения пользовательских учетных записей про протоколу OpenLDAP;
— Policyd — служба политик сервера Postfix; Policyd v2 — кодовое имя «cluebringer».
— Amavisd — используется в качестве интерфейса между Postfix и SpamAssassin. 
— SpamAssassin — это одна из самых известных программ по борьбе со спамом,
— ClamAV — антивирус, который в свою очередь применяются для обнаружения вирусов в почтовых сообщениях;
— Apache — web server;
— Roundcube — Webmail – пользовательский веб-интерфейс для почтовой системы;
— Awstats — анализатор лог-файлов для Apache и Postfix;
— Fail2ban — программа для сканирования лог-файлов, находящихся (как правило) в каталоге /var/log/maillog и блокирующая те ip-адреса, с которых усматриваются признаки попыток подбора паролей к разнообразным службам.

Вкратце почтовую систему на базе postfix можно описать следующей иллюстрацией:

ispmail1

И еще одна картинка для улучшения понимания:

Linux postmail 2

Преимущества использования перед другими системами:

— Бесплатный и в то же время полнофункциональный почтовый сервер, использующий свободные open source решения, которые выпускаются под лицензией GPLv2
— Поддержка таких известных виртуальных машин, как VMware, Xen, KVM, OpenVZ, VirtualBox.
— Поддержка архитектуры i386 и x86_64/amd64 и таких операционных систем как Red Hat, CentOS, Scientific Linux, Debian, Ubuntu, Gentoo, openSUSE, FreeBSD, OpenBSD.
— Простота и скорость установки, по сравнению с ручным методом, где можно допустить много ошибок и потом очень долго гуглить… Наличие большого комюнити, где можно получить тех поддержку в случае возникновения каких либо проблем.

1) Настройка системы

Как то исторически сложилось, что под почтовую систему я использую debian, поэтому в данной заметке буду описывать процесс установки сервера iRedmail на debian последней версии. Для этого скачиваем версию netinst, которая с минимальным набором ПО. Установку описывать не имеет смысла — там все предельно просто, но для совсем новичков рекомендую ознакомится со следующей статьей. Затем настроим сеть, для этого редактируем файл:

# The primary network interface
allow-hotplug enp0s3
iface eth0 inet static
address 192.168.2.5
netmask 255.255.255.0
network 192.168.2.0
broadcast 192.168.2.255
gateway 192.168.2.1
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 192.168.2.1
dns-search test.ru

После выполнения несложных шагов по установке, убедимся что установлен ssh server. Если нет, то исправляем, установкой соответствующих пакетов:

Непосредственно перед установкой на хосте должно быть установлено полностью определенное доменное имя (FQDN). Проверить это можно, используя следующую команду:

В нашем случае получаем.

Если так, то значит во время установки debian мы сделали все правильно. Если требуется изменить имя хоста, то редактируем  /etc/hostname и /etc/hosts.

Для распаковки пакета, нам потребуется bzip. Если, его нет то выполняем команду:

2. Установка iredMail

Теперь перейдем непосредственно к установке самого сервера. Качаем последний стабильный релиз Iredmail отсюда. Если при помощи wget, то не забудем указать параметр —no-check-certificate — не проверять сертификат сервера.

Извлекаем пакет командой:

Переходим в директорию и запускаем установочный скрипт:

Запустится мастер, где необходимо будет ответить на ряд вопросов, определяющий дальнейший ход установки, а так же функциональные особенности сервера, которые мы хотим получить на выходе. Нажимаем Да.

iRedmail Install- First StepНа следующем экране укажем каталог для хранения почтовых сообщений. По умолчанию /var/vmail. Установщик нам сообщит, что объем почтового хранилища зависит от почтового трафика и обычно для этих целей требуется объемный диск. Путь должен быть записан в нижнем регистре.

iRedmail Install- Second StepНа следующем экране выберем back-end — тип баз данных для хранения почтовых аккаунтов. На выбор OpenLDAP, MySQL, PostgreSQL. Выбираем MySQL, нажимаем Далее.

iRedmail Install- Back-end?Далее зададим пароль администратора MySQL. Нельзя использовать специальные символы, например $ или #, а так же оставлять поле  пароля пустым. Нажимаем Next.

iRedmail Install- MySQL-Back-endЗатем указываем доменное имя, которое хотим иметь после @. Полное доменное имя мы прописали еще ранее.

iRedmail Install- MySQL-Back-endНа следующем экране, зададим пароль административной учетной записи postmaster, при помощи которой мы будем создавать другие учетные записи и управлять нашим сервером.

iRedmail Install- MySQL-Back-endСледующий экран, выбор опциональных компонентов.  Оставляем по умолчанию и нажимаем Next.

iRedmail Install - MySQL - Выбор опциональных компонентовНажимаем Yes, соглашаемся с установкой пакетов и затем с изменением правил файрвола. Дожидаемся конца установки. Не рекомендуется прерывать процесс установки, а потом снова запускать установочный скрипт, иначе потом можно обнаружить что, что-то не работает должным образом, не пускает в iredadmin например, как это было у меня. Перезагружаем сервер.

Теперь перейдем в roundcube, набрав в адресной строке доменное имя нашего сервера или его ip-адрес.

https://mail7.test.ru/mail

Для обращения по имени, адрес сервера должен быть сопоставлен на dns-сервере или, если установка происходит в тестовой среде, нужный адрес с доменным именем можно прописать в файле C:\WINDOWS\system32\drivers\etc\hosts если используется Windows и /etc/resolv.conf для Linux.

Соглашаемся с достоверностью сертификата, добавив его в исключения. Залогинимся при помощи административного пользователя, в нашем случае postmaster@test.ru. В самом начале, во входящих будет два сообщения. Нас интересует Details of this iRedMail installation, где будут перечислены все установленные пакеты с указанием конфигурационных файлов и паролей. Важно сохранить, этот файлик в надежном месте.

Roundcube - Main Screen

Для перехода в админку сервера iredadmin, переходим по адресу — https://debian7.test.ru/iredadmin. Здесь создаются пользователи, домены и квоты.

4. Создание нового ssl-сертификата.
В Debian, сертификаты хранятся в /etc/ssl/certs и /etc/ssl/private.

Перемещаем текущие сертификаты куда-нибудь в другой каталог.

Редактируем скрипт, находящийся в каталоге дистрибутива iRedMail.

Меняем, TLS-параметры  применительно к своей области.

iRedMail - Меняем параметры TLS

Для того что бы сертификаты оказались в нужных директориях, копируем скрипт в каталог /etc/ssl/

Запускаем скрипт.

Дадим права на чтение для всех пользователей.

Перезапустим Apache.

5. Редактирование зон DNS. Записи ptr, spf, DKIM.

Для корректной отправки почты с нашего сервера — добавим обратную ptr-запись указывающую на доменное имя нашего почтового сервера. Прописывается в обратной зоне провайдера, владеющего этим IP. Поэтому звоним провайдеру и говорим чтобы он прописал требующуюся PTR запись.

Рекомендуется так же, прописать специальную spf-запись (Sender Policy Framework) которая позволяет проверить не подделан ли домен отправителя. SPF-запись позволяет снизить вероятность попадания в спам писем, отправленных с вашего домена. В SPF-записи домена указывается список адресов серверов, с которых имеет право отправляться почта с ящиков на вашем домене. Настройка SPF-записи не является обязательной для работы почты, тем не менее, она поможет избежать потери отправленных писем.

Переходим в админ-панель своего доменного регистратора и в днс настройках вашего домена создадим txt-запись со следующим содержимым:

где, V=spf1 — используемая версия spf,

«+a» — разрешает прием писем от узла, IP-адрес которого совпадает с IP-адресом в A-записи для example.org;

«+mx» — разрешает прием писем, если отправляющий хост указан в одной из MX-записей для example.org;

ip4 — принимать письма, отправленные с IP-адреса public_ip — ваш адрес почтового сервера.

«-all» — все сообщения, не прошедшие верификацию с использованием перечисленных механизмов, следует отвергать.

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

И наконец добавим DKIM-запись (DomainKeys Identified Mail), которая служит дополнительным средством борьбы со спамом и фишингом. DKIM — это технология удостоверения подлинности отправителя при помощи цифровой подписи, связанной с именем домена. Наличие DKIM подписи подтверждает, что письмо действительно было отправлено с указанного адреса.

Встроенный в iredmail, фильтр контента amavisd-new может подписывать сообщения с помощью DKIM. Далее, рассмотрим как правильно прописать DKIM-запись для подписи сообщений в нашем тестовом домене “test.ru”. Набираем в командной строке:

Вывод команды будет следующим:

Для удобства копи-паста, содержимое команды перенаправим в файл.

Что бы исключить ошибки, проверим нашу запись при помощи онлайн сервиса DKIM Core.

Уберем не нужные кавычки. Содержимое вывода команды пропишем на DNS-сервере регистратора доменного имени. Например применительно к reg.ru необходимо добавить TXT-запись, где в поле subdomain прописать: dkim._domainkey, где dkim — специальный слектор, который задается в конфиге amavis (/etc/amavis/conf.d/50-user) и ._domainkey обязательная часть откуда будет извлекаться открытая часть доменного ключа.

Ждем пока информация о наших изменениях доберется до корневых DNS серверов (от 30 минут до 2-3 суток) после чего, набираем в консоли:

Если в ответ получим:

То значит, все хорошо. Дополнительно протестировать работу почты с использованием spf и dkim можно при помощи google mail. Отправляем сообщение на почтовый ящик gmail. Откроем полученное сообщению и в меню выберем «Показать оригинал»
Gmail Test SPF и DKIMНаходим строчки:

Authentication-Results: mx.google.com;
spf=pass (google.com: domain of admin@test.ru designates 11.222.333.444 as permitted sender) smtp.mail=admin@test.ru;
dkim=pass header.i=@test.ru

И так же видим что, проверки пройдены успешно. Если видим «neutral» или «failed», то значит что-то прописано неправильно, и гугл не доверяет серверу, с которого было отправлено письмо.

6. Резервное копирование (Backup) почты на windows-шару.

Создадим скрипт автобэкапа, например файл будет называться backup_mailboxes.sh со следующим содержимым:

#!/bin bash
mount -t cifs //192.168.0.2/BackupMail$ /mnt/net -v -o username="BackupUser",password="12345678",domain="test.spb"
cd /mnt/net
zip -r mail_backup-$(date +%Y-%m-%d_%H-%M-%S).zip /var/vmail/vmail1
fuser -m -k TERM /mnt/net
umount /mnt/net

где:

  • mount -t cifs //192.168.0.2/BackupMail$ — путь к виндовой шаре;
  • username=»BackupUser»,password=»12345678″,domain=»test.spb» — виндовый пользователь BackupUser, его пароль и домен в который он входит;
  • cd /mnt/net — Переход в директорию куда смонтирована windows-шара;
  • sudo zip -r mail_backup-$(date +%Y-%m-%d_%H-%M-%S).zip  /var/mail/vmail1 — архивация директории /var/mail/vmail1, на выходе получаем zip-архив;
  • fuser -m -k TERM /mnt/net — безопасное извлечение устройства иначе получим ошибку «device is busy»;
  • umount /mnt/net — размонтирование;

Не рекомендую использовать tar.gz или его аналоги в качестве архиватора, если вы собираетесь работать с резервной копией архива под Windows. На практике пришлось столкнуться с невозможностью восстановить такой архив на NTFS-диске, если ранее он был удален. Перепробовав множества утилит по восстановлению, искомый архив прекрасно нашелся и даже открылся архиватором, вернее его первая tar-часть, а вот сам gz-архив оказался битым.

Добавим задачу в планировщик.

Вставляем:

Просмотр заданий:

7. Фильтрация спама и блокировка вложений средствами Postfix.

Следующие директивы в /etc/main.cf приведем к следующему виду. Обратим внимание на формат записи с новой строки, где после основной директивы, последующие параметры цепочки, должны начинаться с пробела.

В helo_access.pcre кроме прочего добавил следующие строки, меняем на свои значения:

address_verify_sender=double_bounce_sender — проверка существования адреса отправителя.
Активируем изменения командой:

Для фильтрации вложений по расширению файла, средствами postfix открываем на редактирование /etc/postfix/main.cf и добавляем туда следующую строку:

Открываем файл /etc/postfix/mime_header_checks на редактирование и добавляем туда следующее содержимое:

Или можно так:

Активируем изменения командой:

Примеры реализации разных фильтров для postfix можно посмотреть здесь.

8. Блокировка вложений и фильтрация спама средствами Amavis, Policid.

Для блокирования вложений удобно так же использовать Amavis, поскольку внутри уже есть готовые шаблоны масок в файле 20-debian_defaults и другие полезные опции по фильтрации содержимого.

Все что нужно это перенести нужные строки в основной конфиг 50-user. Для того что бы блокирование стало возможным, необходимо изменить параметр $final_banned_destiny с D_PASS на D_BOUNCE, что значит, что почта не пройдет к получателям, а уведомление о блокировке сообщения будет выслано отправителю:

D_PASS — почта проходит к получателям, даже если был обнаружен вирус или спам.
D_DISCARD — почта не проходит к получателям, отправитель не получает уведомление.
D_REJECT — почта не проходит к получателям, отправитель должен получить reject (SMTP permanent reject response). Не рекомендуется использовать с postfix.

Лично у меня в конфиге, прописан примерно следующий код:

После внесения изменений перезапустим amavis.

Полезно будет добавить так же следующий кусок кода:

Фильтрация спами при помощи polycyd (cluebringer):

Для фильтрации спама, наряду со spamassassin дополнительно используется Policy Daemon, кодовое имя «cluebringer». В более поздней версии заменен на iRedAPD. Доступ к веб по адресу: https://debian7.test.ru/cluebringer/

По мимо белых списков грейлистинга, здесь можно так же задавать белые и черные списки по HELO/EHLO отправителя, проверять SPF, создавать квоты и прочее. Логика работы «немного» не удобная, особенно когда добавляешь хост в черный список, он автоматически получает статус выключен (Disabled) что в интерфейсе отображается как Yes и нужно еще раз подсветить это адрес и выбрать No, что означает что политика включена. Дебилизм конечно, но возможно это лучше чем тыркаться в mysql.

Подробнее о механизме работы, можно почитать в следующей статье.  Для отключения, редактируем файл cluebringer.conf. 1 — включено, 0 — выключено.

и перезапустим демон командой:

Но лучше не отключать и разобраться в его работе, так как вещь полезная и позволяет существенно снизить объем получаемого спама.

9. Перенос почтового хранилища на другой более ёмкий диск.

Если почтовое хранилище исчерпало себя то можно подключить еще один диск и подмониторовать туда директорию с почтой, которая хранится в /var/vmail.

После подключения диска, набираем в консоли:

Система сообщит нам что у нашего диска отсутствуют разделы. Исправляем.

Нажимаем, new —>primary—>1—>write.

После форматируем диск:

При форматировании в ext3 и ext4, для пользователя root резервируется 5% места. Чтобы убрать 5 процентное резервирование нужно дать команду:

Так же имеет место быть принудительная проверка диска после некоторого количества загрузок. Если вам это не нужно, процедуру можно отменить командой:

Либо сделать так, чтобы проверка происходила реже, например, 1 раз в 100 загрузок:

Теперь необходимо настроить монтирование раздела в директорию /var/vmail.

Для быстрого монтирования набираем:

Для постоянного монтирования добавляем строчку в /etc/fstab.

где, UUID нужного диска можно узнать при помощи команды blkid.

10. Перенаправленные почты с одного адреса на другой, автоответчик.

Самый простой способ сделать перенаправление средствами Roundcube.

Перейти в \настройки\фильтры\Наборы фильтров\ и добавить новый фильтр, нажатием на крестик. Необходимо задать имя фильтру. Выбрать правило, и действие «Отправить копию сообщения на» и указать адрес на который будет перенаправляться наша почта.

iRedMail - фильтр перенаправления почтыЕсли по каким то причинам Roundcube в вашей сети не доступен, то можно сделать перенаправление средствами mysql.

Здесь forwarding01@yandex.ru, forwarding02@yandex.ru — адреса на которые перенаправляется почта. Тоже самое можно выполнить используя phpmyadmin. Выбрать базу vmail, таблицу alias и прописать в поле goto необходимые  адреса.

iRedMail-phpmyadmin - перенаправление почтыДля автоответчика в Roundcube уже есть настроенный фильтр Vocation. Для создания автоответчика средствами postfix, читаем эту статью.

11. Ошибки возникающие в процессе работы почтового сервера iRedMail и их устранение.

Сюда буду выкладывать ошибки с которыми приходится сталкиваться во время работы:

 — Ошибка доставки, в ответ приходит следующая месага:

550 #5.1.0 Address rejected <адрес получателя> (in reply to RCPT TO command)Reporting-MTA: dns; mail.ngs.ru.

Такая ошибка возникает в следующих случаях:
— Такого адреса не существует или допущена опечатка.

— Спам фильтры не принимают письма с вашего адреса.

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

или такой вариант:

relay=relay.domain.com[11.22.33.444]:25, delay=2.9, delays=0.05/0.02/2.5/0.24, dsn=5.0.0, status=bounced
(host relay.domain.com[11.22.33.444] said: 550-Verification failed for <user1@test.ru> 550-Called:
22.444.200.300 550-Sent: RCPT TO:<user1@test.ru> 550-Response: 554 5.7.1 <user1@test.ru>:
Recipient address rejected: Policy rejection 550 Sender verify failed (in reply to MAIL FROM command))

Срабатывают спам-фильтры сервера получателя (в прим: relay.domain.com), который пытается проверить действительный почтовый ящик сервера отправителя (в пример: user1@test.ru), для этого он посылает команду с пустым полем «MAIL FROM <>» а сервер «iRedMail» блокирует его, поскольку считает что данное поле не должно быть пустым. В ответ сервер relay.domain.com отправлет ошибку ферификации для пользователя user1@test.ru (550-Verification failed for <user1@test.ru>). При повторной отправке сообщения на сервер relay.domain.com к сообщению может добавится еще:

550-Previous (cached) callout verification failure 550 Sender verify failed (in reply to MAIL FROM command)

Что указывает на закэшированный отрицательный результат предыдущей проверки. Сообщение отправляемое некоторыми почтовыми серверами, например exim.

В моем случае ситуация возникла, после обновления iRedMail сервера до версии 0.91, где в конфиге компонента iRedAPD, который в свою очередь обновился до версии 1.6.0 был активирован плагин reject_null_sender запрещающий пустое поле отправителя. Плагин по мнению авторов сборки iRedMail, рекомендуемый к использованию и служит дополнительным средством борьбы со спамом, хотя строго говоря нарушает существующие правила RFC по работе smtp-протокола, а именно RFC 2505, где указано что «Недопустим отказ от приема почты с адресом «MAIL From: <>». Поэтому в данном случае мы либо соблюдаем RFC и не используем данный плагин в своей работе, или доверяем опыту сборщиков iRedMail, включаем плагин, то тогда в случае возникновения подобной блокировки придется связываться с админом почтового сервера и попросить внести наш сервер в белый список.

  — Письма от внешних отправителей не доходят до получателей домена test.ru, в ответ к отправителям возвращается ошибка 554 Transaction Failed.

<host1@test.ru>:host mail.test.ru[11.222.333.444] said: 554 Transaction Failed: Command "FROM" field differs from data "FROM" field. (in reply to end of DATA command)

В данном случае виноват аппаратный брэндмауэр D-Link DFL, на котором настроено правило фильтрации от спама с включенной опцией проверки несоответствия адреса «От кого» в команде SMTP-протокола с адресом «От кого» заголовка сообщения. — Check emails for mismatching SMTP command «From» address and email header «From» address. Многие спамеры умышленно делают их различными для того, чтобы сообщения проходили фильтрацию, таким образом, данная функция обеспечивает дополнительную проверку целостности сообщения. Опция полезная, но иногда под нее попадают уже известные надежные сервера типа  яндекса. Поэтому возможно следующие варианты, либо отключать эту опцию, либо не блокировать письма, а помечать как спам, или просто добавлять сервер или почтовый ящик в белый список.

Проблема с запуском clamd — ClamAV-clamd av-scanner FAILED

В логах следующая запись:

mail amavis[32426]: (32426-05) (!)ClamAV-clamd av-scanner FAILED: run_av error: Too many retries to talk to /tmp/clamd.socket (All attempts (1) failed connecting to /tmp/clamd.socket) at (eval 113) line 603.\n
Jan 14 12:32:03 mail amavis[32426]: (32426-05) (!)WARN: all primary virus scanners failed, considering backup

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

Перезапускаем демон:

Если ругается что файлы баз не обнаружены, то запускаем:

Убедимся что amavis так же запущен:

— Ошибка сокета — /tmp/socket:

Ошибка сокета может банально возникать из-за нехватки системных ресурсов. В логах можно получить следующие ошибки:

Jan 12 16:17:35 mail amavis[31635]: (31635-10) (!)connect to /tmp/clamd.socket failed, attempt #1: Can't connect to UNIX socket /tmp/clamd.socket: Connection refused
Jan 12 16:17:36 mail amavis[31635]: (31635-10) (!)connect to /tmp/clamd.socket failed, attempt #1: Can't connect to UNIX socket /tmp/clamd.socket: Connection refused
Jan 12 16:17:36 mail amavis[31635]: (31635-10) (!)ClamAV-clamd: All attempts (1) failed connecting to /tmp/clamd.socket, retrying (2)
Jan 12 16:17:42 mail amavis[31635]: (31635-10) (!)connect to /tmp/clamd.socket failed, attempt #1: Can't connect to UNIX socket /tmp/clamd.socket: Connection refused
Jan 12 16:17:42 mail amavis[31635]: (31635-10) (!)ClamAV-clamd av-scanner FAILED: run_av error: Too many retries to talk to /tmp/clamd.socket (All attempts (1) failed connecting to /tmp/clamd.socket) at (eval 113) line 603.\n
Jan 12 16:17:42 mail amavis[31635]: (31635-10) (!)WARN: all primary virus scanners failed, considering backups

или

amavis[32427]: (32427-04) (!)connect to /tmp/clamd.socket failed, attempt #1: Can't connect to UNIX socket /tmp/clamd.socket: \303\220\302\235\303\220\...
Jan 14 12:32:37 mail amavis[32427]: (32427-04) (!)ClamAV-clamd av-scanner FAILED: run_av error: Too many retries to talk to /tmp/clamd.socket (All attempts (1) failed connecting to /tmp/clamd.socket) at (eval 113) line 603.\n
Jan 14 12:32:37 mail amavis[32427]: (32427-04) (!)WARN: all primary virus scanners failed, considering backups
Jan 14 12:32:37 mail amavis[32427]: (32427-04) (!)run_av (ClamAV-clamscan) FAILED - unexpected exit 2, output="WARNING: Ignoring deprecated option

Набираем в консоли:

И смотрим сколько памяти выделено для всего сервера, а сколько отжирают другие процессы. В моем случае было мало оперативки 512 мб, выделил серверу 2048, после объем вырос до 900 метров. Очевидно, что при таком объеме сервер задыхался.

— Нехватка свободного места на диске «No space left on device»

В логах видим следующее:

Jun  8 06:25:52 mail postfix/cleanup[23449]: warning: 9A7E763075: write queue file: No space left on device
Jun  8 06:25:52 mail postfix/pickup[23030]: warning: maildrop/555638131F: error writing 9A7E763075: queue file write error
Jun  8 06:25:52 mail postfix/pickup[23030]: 9DB5A63075: uid=0 from=<root>
Jun  8 06:25:52 mail postfix/cleanup[23449]: 9DB5A63075: message-id=<20140608022552.9DB5A63075@mail.domain.ru>
Jun  8 06:25:52 mail postfix/cleanup[23449]: warning: 9DB5A63075: write queue file: No space left on device
Jun  8 06:25:52 mail postfix/pickup[23030]: warning: maildrop/8994581321: error writing 9DB5A63075: queue file write error

Дословно, «не могу записать файл очереди. Нет свободного места на устройстве.» Соответственно, почта перестает ходить, apache перестает принимать запросы на доступ через web, короче ситуация крайне неприятная. В моем случае вероятно, место закончилось из-за большого количества ранее загруженных deb-пакетов, которые хранятся в /var/cache/apt/archives

Посмотреть сколько занимают места на диске эти пакеты:

Почистить можно командой:

Посмотреть свободное место на дисках/устройствах в мб и гб:

При случае основной диск можно расширить при помощи Gparted, загрузившись с Live-образа.

— Неправильная информация о свободном месте почтового ящика ограниченного квотой.

roundcube-quotaБыла замечена следующая особенность, что если удалять старые письма в почтовом ящике, прямо из mailbox, например входящие сообщения по адресу /var/vmail/vmail1/domain.ru/t/s/t/tst-2013.08.13.17.54.47/Maildir/cur то процент свободном пространства в почтовом клиенте будь то Rouncube, Thunderbird или любой другой ни как не изменится либо изменится но незначительно. Дело в том, что сервер Dovecot понимает только локальное удаление писем непосредственно из клиента, а при удалении из maibox счетчик квоты не сбрасывается. Что бы это поправить в конкретном ящике, выполняем следующую команду:

Во всех ящиках на почтовом сервере:

12. Обновление сервера iRedMail

В данном разделе будут выкладываться ссылки на актуальные статьи по обновлению почтовой системы iRedMail и ее компонентов.

18.02.2016. Обновление почтового сервера iRedMail с 0.9.2 до 0.9.5-1.

18.01.2018. Обновление почтового сервера iRedMail с 0.9.5-1 до 0.9.7.

  • Илья

    Спасибо за статью!

  • Bootmen

    Здраствуйте.
    Подскажите пож.
    Установил iredmail и заметил пробелу-
    не срабатывает permit_sasl_authenticated
    то есть например в цепочке:
    smtpd_helo_restrictions = permit_mynetworks,
    permit_sasl_authenticated,
    reject_non_fqdn_helo_hostname,
    reject_invalid_helo_hostname,
    check_helo_access pcre:/etc/postfix/helo_access.pcre
    Все правила все равно срабатывают для пользователей
    прошедших аутификацию.
    Всю голову сломал. Помогоите пож.

    • admin

      Добрый, а как вы проверяете?

      • Bootmen

        Уже разобрался сам. :)
        Просто у некоторых узеров стоит Бат выпуска до 2010 года.
        К тому пиратский (не обновляется).
        И по своей глючности не работает нормально с TLS.
        Почтовик не воспринимает их как нормально залогиненых и применяет
        свои ограничения к таким по полной.
        Тут другая проблема возникла с вебмордой.
        Когда узер хочет выйти из вебинтефейса (кнопка =выход=),
        почтовик вежливо это ему запрещает. (??!!)
        Грит типа операция эта разрешена по безопасности и обратитесь
        к админу. Бред какой то.

        • admin

          Это во всех браузерах такое? Не разу не сталкивался с таким…если только IE что-нибудь блокирует, в mozilla и chrome не наблюдал такого!

          • Bootmen

            Изредка выскакивает. Сегодня небыло.
            Вообще глючноватая последняя сборка.
            Тут долго не мог избавится от одной заразы:
            warning: problem talking to server 127.0.0.1:7777: Success
            Cрабатывало если у клиента не было поля From
            (ответы например от даемонда майлру)
            Оказалось что разработчики добавили дурацкий плагин
            «reject_null_sender» который и гадил втихомолку.
            И какойто админ на ихнем сайте с китайской фамилией
            утверждал, что это все по правилам. ::)

          • admin

            По поводу reject_null_sender, да есть такая тема, или отключить или попросить админа добавить ваш сервак в белый список. И как бы да, строго говоря это не по правилам, но я пока оставил, наблюдаю :) За почти 3 года использования сервера пока только один раз сталкивался с невозможностью доставить письмо по причине ответной проверки сервером пустого адреса отправителя.

  • Bootmen

    Сегодня вообще отключил iredapd в main.cf
    Как заметил уже в третий раз: после недельной ротации логов, примерно через час
    сервер впадает в ступор и всем отвечает problem talking to server 127.0.0.1:7777
    Дебаг был выключен и я не смог застукать какой плагин глючит.
    Какие проблемы ожидают меня в связи с этим отключением?
    Проблем от начальства я сегодня уже нахватал.

    • admin

      А зачем отключил? Не пробовал гуглить проблему у них на форуме? Вот здесь например товарищ нашаманил что-то в smtpd_recipient_restrictions и копи паста от ZhangHuangbin как бы помогла :) Ну как минимум перестанут работать плагины перечисленные в конфиге iredapd, другой вопрос на сколько конкретно они вам нужны. В глобальном смысле думаю ничего страшного, а так лучше задать этот вопрос товарищу ZhangHuangbin — это он автор :)

      • Bootmen

        В сылке вообще ни о чем.
        Я по другой ветке этого китайца питона обновлял. Тоже не помогло.
        С рестрикшенами я давно работаю. Они не могут повлиять
        на последующие правила в цепочке.
        Разве, что где то применяются REDIRECT или REPLACE.
        У меня такого нет.
        Я только понял, что проблема вылазиет после ротации логов.
        То есть после рестарта iredpad. А другие процессы делают рестарт
        позже или вообще не перегружаются. Я уже подумывал вставить
        в кронтаб полную перезагрузку init 6 сразу после ротации.
        Но, это конечно кривое решение. Интересно если я этому
        китайцу вопрос задам (через гугля переводчка) он поймет суть?
        :)

        • admin

          а кто его знает может и поймет, но лучше я думаю через yandex translate, там перевод точнее будет :)

  • Andrey

    Подскажите как произвести настройку так что б письма приходящие на несуществующие ящики сливались на существующий?)

    • admin

      Andrey, сам я так не пробовал, нет необходимости, ищете статью на iredmail.org по запросу «SQL: Add per-domain catch-all account» возможно это то что вам нужно.

  • Denis Mikhaylov

    Добрый день. Подскажите, пожалуйста, как я могу отключить проверку вложений? Не уходят и не приходят письма с нектороми вложениями (некоторые файлы .pdf, .docx, xlsx) — иногда пролетают, иногда нет. Иногда помогает переименновываение без изменения расширения файла. Когда письмо не отправляется, отправителю приходит ответ 550 5.7.1 message content rejected. В настройках postfix, amavis, spamassassin в опциях спама, вирусов и бана стоят значения D_PASS, ни в одной опции нет значений D_REJECT or D_BOUNCE.
    Ошибка остается. Остановил демонов amavis, spamassassin, clamav. Нет результата, письмо не уходит. Прошу Вашей помощи. Какую строку в каком конфигурационном файле нужно исправить и как, для того, чтобы сервер пропускал письма с вложениями? Очень благодарен за ответы.

    • admin

      А как вы настраивали сервер? Речь идет об iRedMail, если да то какая версия? Или вы сами все настраивали с 0-ля? Как проверяете, почтовый клиент какой? Рекомендую параллельно поднять виртуалку с новой ОС и свежим IredMail и оттуда взять настройки и перенести в существующий сервак если это продакшн. И еще неплохо бы от вас получить полный лог начиная с установки соединения на какой нибудь почтовый сервер, например yandex, с вложением и без.

  • Denis Mikhaylov

    Доброе утро. Забыл добавить. Linux server 3.2.0-4-amd64 #1 SMP Debian 3.2.73-2+deb7u1 x86_64 GNU/Linux

  • Denis Mikhaylov

    Здравствуйте, admin. Речь идет о iRedMail версии 0.8.5. Работает исправно и давно (года полтора, точно). Настраивал сам по учебнику. Проверял с любого клиента, с любого бразуера, с любого аккаунта. Дело имено в вложенных файлах. Виртуалку поднять, конечно, можно, но только это ничего не изменит, т.к. на сервере и так стоят практически дефолтные настройки. Я и полез в них только из-за этой ерунды. Она не очень мешает, т.к. большинство файлов проходит нормально, те, что не проходят — ну может, процент-два.
    Логи почистил, перезагрузил сервер и тут же отправил «непроходное» письмо со своего же аккаунта на свой. Снятые после этого логи здесь http://megafilter.ru/download/log.zip

    Виртуалки и прочие затеи, это безусловно хорошо, но вопрос то был — где в настройках блокировка писем по вложениям?

    Письмо не уходит с ошибкой 550 5.7.1 message content rejected.

    :

    • admin

      Да древняя версия однако, судя по логам там еще spamassassin в виде отдельного демона, а не интегрирован в amavis как в последних версиях, у меня к примеру в логах вообще нет не строчки про «smapd» и в самой свежей версии на новом сервере проверил тоже. Ну судя по кусочку из лога, «mail postfix/cleanup[6368]: C6476339: reject: body…5.7.1 message content rejected» проблема именно в postfixе, тем более если, при отключенном amavis, spamassassin, clamav тоже самое. В main.cf случайно не задействована проверка тела сообщения — body_checks = regexp:/etc/postfix/body_checks ? Если да, то отключаем эту и прочие «regexp» и проверяем как будет. Еще у вас amavis ругается что «internal_networks not configured» и spamd не может создать пользовательские настройки — «…cannot create user preferences file….» не плохо бы поправить!

  • Denis Mikhaylov

    Здравствуйте, admin! Спасибо, что помогли! Я бы никогда в жизни не додумался, что одна единственная строка, которая была поставлена для проверки в файл боди_чекс, вида «/.*Test.*/ REJECT» может привести к таким последствиям. Ни в одном из файлов в бинарном виде я не нашел подобной строки. А вот в теле письма, где уже идет base64, есть букафки «…teST…». Мне сложно передать свои чувства, просто опа какая-то. Спасибо огромное! Не сочтите за наглость спросить что можно сделать с указанными вами косяками?

    • admin

      НЕ за что)) По поводу amavis и строки «internal_networks not configured» скорее всего это тот тоже ‘spamassasin’ ругается, и надо в /etc/spamassasin/local.cf добавить параметр «internal_networks» с указанием локальной сети и всех подсетей вашей организации если нужно, включая внешний ip почтового сервера. Там же можно указать параметр «trusted_networks» с указанием тех же ip хостов, которым вы доверяете и от которых точно не будет спама. Подробнее — http://wiki.apache.org/spamassassin/TrustPath

      По второй проблеме: «config: cannot create user preferences file /nonexistent/.spamassassin/user_prefs: No such file or directory» гуглится на раз:
      В /etc/default/spamassassin находим строку:

      OPTIONS=»—create-prefs —max-children 5 —helper-home-dir»

      и меняем ее на

      OPTIONS=»—create-prefs —max-children 5 —helper-home-dir -u debian-spamd»

      Затем выполняем:

      mkdir -p /nonexistent/.spamassassin
      chown debian-spamd: /nonexistent/.spamassassin
      service spamassassin restart

      Но поможет или нет, сложно сказать, у меня такой проблемы не было и spamassassin вообще никак не беспокоит!

  • Pavel Zaharov

    добрый день, не могу приконектится с outlook, по логам дает следующее: Helo command rejected: need fully-qualified hostname; from= to= proto=ESMTP helo=

    • admin

      Pavel, проверьте в свойствах учетной записи Outlook, на вкладке «Сервер исходящей почты» стоит ли галочка SMTP-серверу требуется проверка подлинности (My outgoing server (SMTP) requires authentication)

  • Denis Piskaikin

    Добрый день!!! Поставил iRedMail-0.9.3 , FreeBSD 10.2-RELEASE-p7, при работе в веб морде Roundcubе не прикрепляются файлы , прикрепляются только с расширением тхт, в логах ошибок нет. При том что с клиентов OUTLOOK 2007 , ТHE BAT вложения любые уходят. В РНР.INI все включено. В входящих письмах все вложения скачиваются и открываются.В каком направлении копать?Буду очень благодарен если укажите в каком направлении смотреть.

    • admin

      Добрый, а права на /roundcubemail/temp и /roundcubemail/logs точно 755 ? Чистую установку freebsd и iredmail делаете? Вообще недавно ставил на чистый debian, такого не наблюдал!

  • https://www.facebook.com/app_scoped_user_id/1083466398391770/ Vasily R.

    regect_null_sender в статье это опечатка — reject_null_sender
    Для приведения в соответствие с rfc2505 в плагине plugins/reject_null_sender.py достаточно
    закомментить строки:
    #if not (sender or sasl_username):
    # logging.debug(‘Spam (no sender address or sasl_username).’)
    # return SMTP_ACTIONS[‘reject’]

    • admin

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

  • Alexander

    Добрый день admin. Ставлю iRedMail 0.9.5-1 последнюю на сегодняшний день. На чистую ubuntu 14.04 LTS Server, ставится что называется влет. Но… Не проходит авторизация в awstat. Данные использую из письма, которое приходит на postmaster’a со всеми параметрами доступа.Как авторизоваться?
    На сколько я понял из заголовка входящего письма, проверка идет только на вирусы, спам-фильтр ничего не пишет, т.е. скорее всего просто по умолчанию не работает. Как его активировать? Пробовал в /etc/default/spamassasin выставить ENABLED=1, после этого вылетает amavis и больше не стартует, даже если вернуть в исходное состояние.После этого письма становятся в очередь и не уходят. Не подскажете по этим вопросам?

    • admin

      Добрый, до последней сборки пока не добрался, но на текущей версии все работает. По идее если в awstat не пускает, то и в iredadmin и в roundcube под postmaster’ом не должен, учетные данные то одни. У вас как?

      Проверка идет и на вирусы и на спам, в конфиге amavisа директива отвечающая за спам это @bypass_spam_checks_maps, если строка не закоментированна, то проверка идет. Так же можете перезапустить amavis и затем в логах увидеть какие из модулей он подгружает. Если в перечне есть:

      mail amavis[30888]: ANTI-VIRUS code loaded
      mail amavis[30888]: ANTI-SPAM code loaded
      mail amavis[30888]: ANTI-SPAM-SA code loaded

      То значит антивирусный и антиспам модуль работает и spamassasin активирован и дополнительно включать его не надо. Он управляется и запускается из под amavis в каждый момент времени когда это нужно.
      А что бы наглядно видеть в логах что amavis так же работает, можно включить более подробное логирование, в конфиге ’50-user’ опция: $log_level = 0; ( доступные значения от 1 до 5) и $sa_debug = 1; — включить дебаггер для spamassasin и затем в логах посмотреть как это все выглядит.

  • Taras Mihailik

    Добрый день. Возникла проблема при настройке DKIM
    dkim — специальный селектор где его взять (где лежит)?
    Извините за банальшину

    • admin

      Добрый, что бы поменять имя селектора, открываем на редактирование /etc/amavis/conf.d./50-user и находим строку:

      # Add dkim_key here.
      dkim_key(«test.ru», «dkim», «/var/lib/dkim/test.ru.pem»);

      Меняем «dkim» на свое значение. Перезапускаем amavis.

  • Taras Mihailik

    Спасибо

  • Alexander

    Добрый день, подскажите почему могут приходить сообщения с mail.ru с задержкой 2-3 часа . От Gmail идет все хорошо!

    • admin

      Добрый, а как много времени уже прошло после того как вы установили первый раз сервер и запустили его в работу и какая версия?

  • Taras Mihailik

    Сколько будет стоить развернуть почтовик со всеми сервисами? Если есть такая возможность?

    • admin

      Ответил на почту!

  • Sergei

    Скажите пожалуйста, а как можно побороть ошибку 550 5.2.0 No such mailbox
    Почта с сервера уходит, но не принимает ее. Опечатки в имени майла нет, бо не принимаются и ответы.
    Свежая инсталяция последней версии на свежеинсталлированную убунту 16.10

  • Sergei

    Я 15 минут назад спрашивал о ошибке, но все вопрос решился. DNS, MX-Record запись была неправильна
    Вопрос закрыт. А ведь вчера полдня просидел..

    • admin

      Понятно, спасибо что поделились решением.

  • Ulis

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

    • admin

      Привет, не совсем понял на счет блокировки?

  • Timur

    Добрый день
    Вопросик по iRedmail-0.9.6. Проблемка не столько с серером, сколько с dkim подписью, проблема в следующем, в шапке письма dkim подпись есть, но гугл упорно твердит что dkim=false и сливает почту в спам :( подскажите в чем может быть проблема?

    • admin

      У своего регистратора DNS точно все правильно прописали? Что говорит тест проверки при помощи сервиса dkimcore ?

      • Timur

        DKIM Record for dkim._domainkey.texprint.lv

        v=DKIM1; k=rsa; t=s; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC9xgM/NdGw4/3
        Zj2BcHKnnRP6b4IN0DJ20QCt5t/ocSLqrX12cpjdnEqiZ9oFmAEYHbE4nfughrcow7AoBW6Il+
        yRdJLL6wMq70g9PXzIpR7x2Gl8nY0DTNQeyxwbdD8UN8zUd+pVTqgw+mk91JtBtPpQ/kgS+RyU
        eTO7j17M8JwIDAQAB

        This is a valid DKIM key record

        DNS-сервера у нас тоже свои, и все точно прописано

        • admin

          Самое разумное, это спросить у самого гугла почему так, от них нужен расширенный вывод ошибки, а не просто ‘false’

  • юрий

    Добрый день.
    Не подскажете литературу по изучению IredMail..??
    (но офиц сайте смотрел)
    Может есть что-то более полное.??

    • admin

      Добрый. Ну прямо по IredMail нет, поскольку это не продукт написанный с 0-ля неким разработчиком, а всего лишь сборка из разных opensource компонентов, главным из которых является почтовый сервер Postifx. А вот по нему литература уже имеется и даже на русском. Вот к примеру.