[[A8R.ru]]
...
Exim4: простая настройка и установка на Linux

В этой статье мы подробно рассмотрим процесс установки и настройки Exim4, одного из самых популярных агентов передачи почты для систем Linux.

15.09.2024
Linux

Содержание:

Установка Exim4

На большинстве систем на базе Debian/Ubuntu Exim4 можно установить с помощью следующей команды:

sudo apt update
sudo apt install exim4

Настройка Exim4 с использованием режима "split configuration"

Запустите конфигурационный скрипт для Exim4:

sudo dpkg-reconfigure exim4-config

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

  • "internet site; mail is sent and received directly using SMTP" — это позволит отправлять и получать почту через SMTP.
  • Введите ваше доменное имя (например, example.com).
  • Укажите SMTP-сервер для отправки через Mail.ru (подробности ниже).
  • Оставьте другие настройки по умолчанию или настройте их в соответствии с вашими требованиями.

Настройка файла /etc/exim4/passwd.client

Откройте файл для редактирования:

sudo nano /etc/exim4/passwd.client

Добавьте строку для авторизации через SMTP-сервер Mail.ru:

smtp.mail.ru:your-email@mail.ru:your-mail.ru-password

Замените:

your-email@mail.ru — на ваш полный email-адрес.

your-mail.ru-password — на ваш пароль от Mail.ru.

Настройка конфигурации для использования Mail.ru

Откройте для редактирования файл /etc/exim4/update-exim4.conf.conf:

sudo nano /etc/exim4/update-exim4.conf.conf

Найдите строку dc_eximconfig_configtype и убедитесь, что она выглядит так:

dc_eximconfig_configtype='smarthost'

Найдите строку dc_smarthost и укажите сервер Mail.ru:

dc_smarthost='smtp.mail.ru::587'

Обновление конфигурации и перезапуск Exim4

Обновление конфигурации:

sudo update-exim4.conf

Перезапуск Exim4:

sudo systemctl restart exim4

лог-файлы Exim4

/var/log/exim4/mainlog 
/var/log/exim4/paniclog

Проверка отправки писем

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

echo "Test message from Exim4" | mail -s "Test Email" your-email@mail.ru

Полезные команды

Получение базовой информации по Exim

Вывести количество сообщений в очереди:

root@localhost# exim -bpc

Печать списка сообщений в очереди. Выводятся, время постановки в очередь, размер, ID сообщения, отправитель, получатель:

root@localhost# exim -bp

Печать суммарной информации. Выводимые колонки: количество, объем, старейшее, последнее, домен.

root@localhost# exim -bp | exiqsumm

Чем в данный момент занимается Exim:

root@localhost# exiwhat

Тестирование маршрута доставки до указанного адреса:

root@localhost# exim -bt alias@localdomain.com
user@thishost.com
    <-- alias@localdomain.com
  router = localuser, transport = local_delivery
root@localhost# exim -bt user@thishost.com
user@thishost.com
  router = localuser, transport = local_delivery
root@localhost# exim -bt user@remotehost.com
  router = lookuphost, transport = remote_smtp
  host mail.remotehost.com [1.2.3.4] MX=0

Эмитировать SMTP транзакцию из командной строки, как если-бы сообщение пришло с указанного IP адреса. При этом будет показано прохождение и срабатывание проверок, фильтров и листов доступа (ACL). На самом деле, никакое сообщение никуда доставлено не будет.

root@localhost# exim -bh 192.168.11.22

Листинг всех настроек конфигурации exim:

root@localhost# exim -bP

Поиск очереди с помощью утилиты exiqgrep

Стандартная поставка сервера Exim включает в себя утилиту для поиска по очередям — exiqgrep, это самый оптимальный путь для решения данной задачи. Если вы используете конвейер команд, например из exim -bp в awk, grep, cut и т.д., вы просто усложняете себе жизнь. Различные ключи команды exiqgrep, позволяют достаточно тонко настроить критерии поиска. Ключ -f используется для поиска сообщений конкретного отправителя

root@localhost# exiqgrep -f [luser]@domain

Ключ -r используется для поиска сообщений для определенного адресата

root@localhost# exiqgrep -r [luser]@domain

Ключ -o указывает искать сообщения, старее, указанного количества секунд. В примере, сообщения старее 1 дня:

root@localhost# exiqgrep -o 86400 [...]

Ключ -y ищет сообщения свежее указанного количества секунд. В примере, найти сообщения, пришедшие в течении последнего часа:

root@localhost# exiqgrep -y 3600 [...]

Ключ -s позволяет искать по размеру сообщения, совпадающего с заданным регулярным выражением:

root@localhost# exiqgrep -s '^7..$' [...]

Для поиска только среди заблокированных( замороженных ) сообщений, используйте ключ -z, или -x для поиска только среди не заблокированных. Еще несколько ключей отвечающих за вывод результатов поиска Вывести только ID сообщения, в одном из вышеупомянутых вариантов поиска

root@localhost# exiqgrep -i [ -r | -f ] ...

Печатать счетчик сообщений при одном из вышеприведенных вариантов поиска:

root@localhost# exiqgrep -c ...

Вывести только идентификатор всей очереди:

root@localhost# exiqgrep -i

Управление очередями сообщений

Основной бинарник Exim ( /usr/sbin/exim ), используется с различными ключами для управления сообщениями в очереди. Многие ключи, подразумевают указание одного или более ID сообщения в командной строке, как раз тут вам и пригодится команда exiqgrep -i, которая была упомянута выше. Запуск очереди:

root@localhost# exim -q -v

Запуск очереди только для локальных доставок:

root@localhost# exim -ql -v

Удалить сообщение из очереди:

root@localhost# exim -Mrm  [  ... ]

Очистит все заблокированные сообщения из очереди:

root@localhost# exipick -zi | xargs exim -Mrm

Очистит все сообщения из очереди:

root@localhost# exipick -i | xargs exim -Mrm 

Заблокировать( заморозить ) сообщение:

root@localhost# exim -Mf  [  ... ]

Разблокировать сообщение:

root@localhost# exim -Mt  [  ... ]

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

root@localhost# exim -M  [  ... ]

Доставить сообщение, только если достигнуто время для повторной доставки:

root@localhost# exim -Mc  [  ... ]

Принудительно остановить сообщение с формулировкой "отменено администратором":

root@localhost# exim -Mg  [  ... ]

Удалить все заблокированные сообщения:

root@localhost# exiqgrep -z -i | xargs exim -Mrm

Удалить все сообщения, старше 5 дней (86400 * 5 = 432000 секунд):

root@localhost# exiqgrep -o 432000 -i | xargs exim -Mrm

Заблокировать все письма от указанного отправителя:

root@localhost# exiqgrep -i -f luser@example.tld | xargs exim -Mf

Просмотреть заголовки сообщений:

root@localhost# exim -Mvh 

Просмотреть тело сообщений:

root@localhost# exim -Mvb 

Просмотр логов сообщения:

root@localhost# exim -Mvl 

Добавить получателя в сообщение:

root@localhost# exim -Mar  [ ... ]

Редактировать отправителя сообщения:

root@localhost# exim -Mes  

Удаление заблокированной почты из почтовой очереди Exim

# ps aux | grep 1PN63s-0005r4-Oh
root     22547  0.0  0.1  11608  2988 ?        S    16:54   0:00 /usr/sbin/exim -Mc 1PN63s-0005r4-Oh
exim     22548  0.0  0.0  11608  1540 ?        S    16:54   0:00 /usr/sbin/exim -Mc 1PN63s-0005r4-Oh
root     22774  0.0  0.0   3916   680 pts/0    R+   16:55   0:00 grep 1PN63s-0005r4-Oh
——————
Уничтожьте соответствующий идентификатор процесса exim с помощью команды «kill -9 id»:
——————
# kill -9 22548
——————
Теперь попробуйте удалить почту:
——————
# exim -Mrm 1PN63s-0005r4-Oh
Message 1PN63s-0005r4-Oh has been removed