Как очистить почтовые ящики Dovecot из командной строки.

При использовании Postfix и Dovecot, в какой-то момент столкнулся с проблемой, что некоторые почтовые ящики пользователей заполнились настолько, что попытки удалить почту через web-клиент приводили к его зависанию. В папках было огромное количество спам-писем.

Ниже приведу примеры как выполнять очистку почтовых ящиков пользователей.

 

Для полной очистки папки INBOX для ВСЕХ пользоватлей, команда:

doveadm expunge -A mailbox INBOX ALL

Для полной очистки папки INBOX конкретного пользователя, команда:

doveadm expunge -u example@domain.com mailbox INBOX ALL
ИНФОРМАЦИЯ. Тут очищается папка «Входящие» — INBOX, для «Отправленные» надо заменить на SENT.

 

Для очистки папки INBOX писем стерше 2х недель, выполним команду:

doveadm expunge -A mailbox INBOX savedbefore 2w

Для очистки папки INBOX писем стерше 1го дня, выполним команду:

doveadm expunge -A mailbox INBOX before 1d

Читать далее

Настраиваем Fail2ban, для защиты Postfix от попыток авторизации с использованием SASL метода аутентификации.

Рассмотрим как защитить Postfix от попыток авторизации с использованием SASL метода аутентификации.

Когда проверка подлинности завершается неудачей, в лог-файл /var/log/maill.log записываются записи вида:

Oct 20 08:00:42 mail postfix/smtps/smtpd[23234]: warning: unknown[5.34.207.172]: SASL LOGIN authentication failed: UGFzc3dvcmQ6
Oct 20 08:00:42 mail postfix/smtps/smtpd[23234]: lost connection after AUTH from unknown[5.34.207.172]

С помощью Fail2Ban будем отлавливать такие астоту таких неправильных попыток аутентификации. Для этого нам нужно настроить Fail2Ban для обновления правил брандмауэра, чтобы отклонять такие IP-адреса в течение определенного периода времени. В дополнение к этому, Fail2ban также позволяет создавать уведомления по электронной почте. И, когда происходит возможная атака, Fail2ban немедленно оповещает владельца сервера по электронной почте.

 

# Создаем фильтр Fail2Ban для поиска сбоев аутентификации:

cat << EOF > /etc/fail2ban/filter.d/postfix-sasl.conf
[INCLUDES]
before = common.conf
[Definition]
_daemon = postfix(-\w+)?/\w+(?:/smtp[ds])?
failregex = (?i): warning: [-._\w]+\[<HOST>\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed(: [ A-Za-z0-9+/]*={0,2})?\s*$
ignoreregex =
EOF

Читать далее

Настройка DKIM в связке с Postfix.

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

Прошу обратить внимание что все ниже действия будут производится применительно к домену — example.com.

 

# Устанавливаем пакеты OpenDKIM:

apt-get install opendkim opendkim-tools -y

 

Настройка OpenDKIM

# Создаем каталоги для хранения файлов данных OpenDKIM:

mkdir /etc/opendkim
mkdir /etc/opendkim/keys
touch /etc/opendkim/KeyTable
touch /etc/opendkim/SigningTable
touch /etc/opendkim/TrustedHosts

# Добавляем пользователя postfix в группу opendkim. Назначаем права собственности пользователю opendkim:

adduser postfix opendkim
chown -R opendkim:opendkim /etc/opendkim

# Создаем каталог с названием домена для размещения ключа:

mkdir /etc/opendkim/keys/example.com

 

# Генерируем открытый и закрытый ключи:

opendkim-genkey -r -s mail -d example.com -D /etc/opendkim/keys/example.com -v

# Применим права доступа для созданного ключа:

chown -R opendkim:opendkim /etc/opendkim/keys/*

 

# Добавляем в файл (/etc/opendkim/KeyTable) пару селектор/домен и путь к их закрытому ключу. В качестве селектора используем строку которую указывали при генерации ключа (mail):

echo "mail._domainkey.example.com example.com:mail:/etc/opendkim/keys/example.com/mail.private" >> /etc/opendkim/KeyTable
ИНФОРМАЦИЯ.  Если на почтовом сервере несколько доменом, то DKIM запись должна быть по одной строке на каждую пару селектор/домен и путь к их закрытому ключу.

 

# Добавляем в файл (/etc/opendkim/SigningTable) домен и его селектор:

echo "*@example.com mail._domainkey.example.com" >> /etc/opendkim/SigningTable

# Определяем в файле (/etc/opendkim/TrustedHosts) перечень доверенных хостов, исходящие от этих хостов подписанными:

cat << EOF > /etc/opendkim/TrustedHosts
127.0.0.1
localhost
*.example.com
EOF

Читать далее

Установка почтового сервера Postfix и Dovecot на Debian 10 Buster

Недавно разбирался как поднять почтовый сервер на Postfix в связке с Dovecot, для памяти опишу как поднять такой сервер на Debian 10. Все действия ниже будут выполняться от root.

 

Настройка DNS записей

# Добавляем DNS-записи для вашего почтового сервера:

@           MX  10  mail.example.com.
mail        A   192.168.1.10

 

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

# Задаем имя системы (mail) в файле (/etc/hostname):

echo mail > /etc/hostname

# Указываем в файле (/etc/hosts) строку содержащую IP-адрес с полным доменным именем (FQDN).

127.0.0.1       localhost
192.168.1.10    mail.example.com mail
ИНФОРМАЦИЯ: В приведенном выше примере 192.168.1.10 — это IP-адрес машины, mail — это имя локального хоста, а mail.example.com это полное доменное имя.

 

Настройка MySQL

Данные о пользователях почтового сервера (адреса электронной почты), доменах и псевдонимах будут хранится в базе данных MySQL.

 

# Устанавливаем MySQL сервер.

apt-get install mariadb-server -y

# Выполняем базовую настройку безопасности MySQL сервера и входим на сервер.

mysql_secure_installation

mariadb

 

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

CREATE DATABASE postfix;
CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'postfix';
GRANT SELECT ON postfix.* TO 'postfix'@'localhost';
FLUSH PRIVILEGES;

 

# Переключаемся на созданную базу данных, для создания необходимых таблиц.

use postfix;

 

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

CREATE TABLE `virtual_domains` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
);

# Создаем таблицу для всех адресов электронной почты и паролей:

CREATE TABLE `virtual_users` (
  `id` int(11) NOT NULL auto_increment,
  `domain_id` int(11) NOT NULL,
  `password` varchar(106) NOT NULL,
  `email` varchar(100) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `email` (`email`),
  FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
);

Читать далее

Подключение к Exchange Online через PowerShell на Debian 10 Buster

# Устанавливаем powershell c репозиториев Microsoft.

# Download the Microsoft repository GPG keys
wget https://packages.microsoft.com/config/debian/10/packages-microsoft-prod.deb

# Register the Microsoft repository GPG keys
sudo dpkg -i packages-microsoft-prod.deb

# Update the list of products
sudo apt-get update

# Install PowerShell
sudo apt-get install -y powershell
В Debian 10 в репозиториях версия Openssl 1.1.1 и используемые SSL библиотеки этой версии при попытке подключения к Exchange Online приводят к ошибке:

/usr/bin/pwsh: symbol lookup error: /opt/microsoft/powershell/7/libmi.so: undefined symbol: SSL_library_init

Для решения этой проблемы установим версию Openssl 1.0.2u.

# Скачиваем исходник пакета Openssl 1.0.2u,

wget https://github.com/openssl/openssl/archive/OpenSSL_1_0_2u.tar.gz
tar -zxvf OpenSSL_1_0_2u.tar.gz

# Собираем и устанавливаем пакет — Openssl 1.0.2u (устанавливаем в несистемный каталог, чтобы он не перезаписать текущую версию)

cd openssl-OpenSSL_1_0_2u

./config --prefix=/opt/openssl/1.0.2u shared
make test
make clean
make install

# Настраиваем симлинки в /opt/microsoft/powershell/7 для libssl и libcrypto, чтобы они указывали на версии 1.0.2.

ln -sf /opt/openssl/1.0.2u/libssl.so.1.0.0 /opt/microsoft/powershell/7/libssl.so.1.0.0
ln -sf /opt/openssl/1.0.2u/libcrypto.so.1.0.0 /opt/microsoft/powershell/7/libcrypto.so.1.0.0

Читать далее

Установка Imapsync на Ubuntu 20.04 & Debian 10 Buster

# Устанавливаем необходимые пакеты зависимостей.

apt install libauthen-ntlm-perl libcgi-pm-perl libcrypt-openssl-rsa-perl libdata-uniqid-perl libencode-imaputf7-perl libfile-copy-recursive-perl libfile-tail-perl libio-socket-inet6-perl libio-socket-ssl-perl libio-tee-perl libhtml-parser-perl libjson-webtoken-perl libmail-imapclient-perl libparse-recdescent-perl libmodule-scandeps-perl libreadonly-perl libregexp-common-perl libsys-meminfo-perl libterm-readkey-perl libtest-mockobject-perl libtest-pod-perl libunicode-string-perl liburi-perl libwww-perl libtest-nowarnings-perl libtest-deep-perl libtest-warn-perl libdist-checkconflicts-perl libpar-packer-perl libtest-fatal-perl libtest-modern-perl libtest-requires-perl libtest-mock-guard-perl libproc-processtable-perl make time cpanminus git -y

apt-get install apt-file -y
apt-file update

# Скачиваем исходник пакета Imapsync.

cd /opt/ 
git clone https://github.com/imapsync/imapsync.git
cd imapsync/

# Собираем и устанавливаем пакет — Imapsync.

make
make testp
make install

# Можно проверить работоспособность установленного пакета командой.

imapsync --testslive

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

imapsync \
--host1 imap.source.example.com \
--user1 user@example.com \
--password1 S0urcePassw0rd \
--ssl1 \
--host2 imap.dest.example.com \
--user2 user@example.com \
--password2 Dest1nat10NPassw0rd \
--ssl2

 

Читать далее