Замена отправителя apache в email уведомлениях

Часто при использовании sendmail отправителем почтовых сообщений с сервера становится пользователь, от которого запущен вэб сервер, в нашем случае apache. Для исправления этой ситуации можно применить следующий конфиг: Это в конфиге виртуального хоста apache 1 php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f [email protected]" Это в конфиге exim 1 trusted_users = apache

28 лютого 2020 · 1 хвилина · 50 слів · dimetrius

Шпаргалка по командам exim

Постоянно при работе с exim приходится искать на других сайтах информацию по работе с очередью и остальным командам MTA Exim. Сайты меняются, уходят, приходят и надеяться можно только на себя. Решил у себя сделать заметку по наиболее часто используемым мною командам. Управление Exim Проверка конфигурации, вывод версии, вывод включенных в сборку модулей exim -bV Чем в данный момент занят MTA Exim? exiwhat Проверка маршрутизации почты по адресу электронной почты exim -bt [email protected] Генерирование и отображение статистики Exim из лог-файла eximstats /path/to/exim_mainlog Проверка SMTP соединения из коммандной строки для определенного IP-адреса. Результат покажет через какие проверки будет проходить письмо с данного IP-адреса, через какие ACL и фильтры. Необходимо заменить x.x.x.x на необходимый IP-адрес. exim -bh x.x.x.x Отображение всех настроек Exim exim -bP Информация по очередям (Queue) Вывести информацию по колличеству писем в очереди exim -bpc Вывести список сообщений в очереди (время в очереди, размер, идентификатор сообщения, отправитель, получатель) exim -bp Отображение всех сообщений в очереди (количество, объем, старых, новых, области, и итоги) exim -bp|exiqsumm Поиск сообщений в очереди Поиск в очереди сообщения от определенного отправителя exiqgrep -f [user]@example.com Поиск в очереди сообщений для конкретного получателя/домена exiqgrep -r [user]@example.com Вывод только Message-ID, как результат одного из двух поисковых запросов выше exiqgrep -i [ -r | -f ] ... Вывод количества сообщений, как результат одного из поисковых запросов выше exiqgrep -c [ -r | -f ] ... ...

24 лютого 2020 · 3 хвилин · 486 слів · dimetrius

Русский автоответ в exim (UTF-8)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 begin routers ... autoreplay: driver = accept require_files = /etc/exim/autoreply/$domain/autoreply.${local_part}.msg condition = ${if exists{/etc/exim/autoreply/$domain/autoreply.${local_part}.msg}{yes}{no}} retry_use_local_part transport = userautoreply unseen begin transports ... userautoreply: driver = autoreply file = /etc/exim/autoreply/$domain/autoreply.${local_part}.msg from = "${local_part}@${domain}" subject = "${if def:h_Subject: {Autoreply: \"${rfc2047:$h_Subject:}\"} {Autoreply Message}}" headers = Content-Type: text/plain; charset=utf-8;\nContent-Transfer-Encoding: 8bit to = "${sender_address}"

22 серпня 2019 · 1 хвилина · 68 слів · dimetrius

Exim и несколько доменов, IP адресов

В этой статье добавлю варианты как можно разделить по IP адресам почтовые домены. Очень мало воды и много конфигов. Выбор SSL сертификата на основании домена 1 2 tls_certificate = ${if exists{/etc/ssl/${tls_sni}.crt}{/etc/ssl/${tls_sni}.crt}{/etc/ssl/default_domain.crt}} tls_privatekey = ${if exists{/etc/ssl/${tls_sni}.key}{/etc/ssl/${tls_sni}.key}{/etc/ssl/default_domain.key}}​ где сертификаты должны лежать по пути /etc/ssl/domain.com.crt, а ключи — /etc/ssl/domain.com.key. В случае, если для какого-то домена не будет сертификата, то будет использоваться сертификат по умолчанию — /etc/ssl/default_domain.crt (и соответствующий ключ /etc/ssl/default_domain.key) Обращаю внимание что этот вариант может корректно не работать со STARTTLS. Выбор SSL сертификата на основании сравнения IP адреса и домена 1 2 tls_certificate = ${lookup{$received_ip_address}lsearch{/etc/exim/ips_in.conf}{/opt/mail/ssl/$value.pem}{/opt/mail/ssl/domain.com.cer}} tls_privatekey = ${lookup{$received_ip_address}lsearch{/etc/exim/ips_in.conf}{/opt/mail/ssl/$value.key}{/opt/mail/ssl/domain.com.key}} Используется файл вида: 1 2 3 # cat /etc/exim/ips_in.conf 8.140.110.229: mail2.domain.com 8.140.110.228: mail2.domain2.com Что бы сервер представлялся нужным доменом, правим transports remote_smtp (указывем helo_data): 1 2 3 4 5 remote_smtp: driver = smtp ... helo_data = $sender_address_domain ... Ещё варианты будут описаны ниже. Для выбора IP во время отправки почты и для представления сервера можно использовать конфигурацию 1 2 3 4 remote_smtp: driver = smtp + interface = ${if exists {/etc/exim/ips_out.conf}{${lookup{$sender_address_domain}lsearch{/etc/exim/ips_out.conf}{$value}{}}}{}} + helo_data = ${lookup dnsdb{ptr=$sending_ip_address}{$value}{$primary_hostname}} Здесь мы выбираем какой интерфейс использовать при отправке почты на основании данных в файле, который описан ниже. А так же представляемся именем домена из PTR этого IP адреса. ...

16 липня 2019 · 2 хвилин · 276 слів · dimetrius

Как настроить Basic SMTP AUTH в Exim4

В этом кратком руководстве описаны шаги, которые вы можете использовать, чтобы настроить SMTP AUTH для работы с пакетом exim4 Debian Sarge. (Для пользователей, подключающихся к вашему серверу, а не для пересылки через интернет-провайдера) Первоначально нужно сгенерировать Exim SSL сертификат: 1 /usr/share/doc/exim4-base/examples/exim-gencert Теперь отредактируем /etc/exim4/exim4.conf.template используя любимый текстовый редактор. Раскомментируйте следующие строки: Не копируйте со страницы, потому что форматирование может быть нарушено 1 2 3 4 5 6 7 8 9 plain_server: driver = plaintext public_name = PLAIN server_condition = "${if crypteq{$auth3}{${extract{1}{:}{${lookup{$auth2}lsearch{CONFDIR/passwd}{$value}{*:*}}}}}{1}{0}}" server_set_id = $auth2 server_prompts = : .ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}} .endif Как только вы это сделаете, создайте файл (или отредактируйте, если он уже существует) /etc/exim4/exim4.conf.localmacros Добавьте строку: MAIN_TLS_ENABLE = true Для добавления пользователей и паролей, создайте файл /etc/exim4/passwd Скопируйте вывод комманды: htpasswd -nd usernameforsmtp И вставьте в файл /etc/exim4/passwd Повторите для любых других логинов, которые вам нужно добавить. Готово. Обновляем конфигурацию и перезапускаем Exim4: 1 2 update-exim4.conf /etc/init.d/exim4 restart

18 червня 2019 · 1 хвилина · 152 слів · dimetrius

Авторизация Exim+Dovecot+PostfixAdmin

Я в процессе настройки своего почтового сервера. Эта заметка касается авторизации, которая допускает не шифрованный пароль и шифрованный. Используется Exim4 + Dovecot2 + PostfixAdmin 1. Файл /etc/exim4/exim4.conf - ставишь такую секцию которую я привел: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 begin authenticators auth_plain: driver = dovecot public_name = PLAIN server_socket = /var/run/dovecot/auth-client server_set_id = $auth1 auth_login: driver = dovecot public_name = LOGIN server_socket = /var/run/dovecot/auth-client server_set_id = $auth2 auth_cram_md5: driver = dovecot public_name = CRAM-MD5 server_socket = /var/run/dovecot/auth-client server_set_id = $auth3 2. В файле /var/www/html/postfixadmin/config.inc.php меняешь настройки алгоритмов на: 1 2 $CONF['encrypt'] = 'dovecot:CRAM-MD5'; $CONF['dovecotpw'] = "/usr/bin/doveadm pw"; 3. Файл /var/www/html/roundcube/config/main.inc.php - меняешь алгоритм на cram-md5: 1 $rcmail_config['imap_auth_type'] = cram-md5; 4. Файл /etc/dovecot/dovecot.conf - меняешь алгоритмы авторизации на plain,login и cram-md5: 1 auth_mechanisms = plain login cram-md5 5. Файл /etc/dovecot/dovecot-mysql.conf - ставишь: 1 default_pass_scheme = CRAM-MD5 Так же можно авторизоваться Exim’ом непосредственно в Mysql базе данных (но у меня этот способ не особо заработал): ...

11 серпня 2017 · 2 хвилин · 273 слів · dimetrius

Проверка DKIM для входящих писем Exim

Продолжаю настройку своего почтового сервера. В этой заметке речь будет о проверке DKIM у входящих сообщений с помощью Exim. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 # Добавляем в список ACL для обработки: acl_smtp_dkim = acl_check_dkim # ... # Можно разместить в начале, где задаются переменные для DKIM-отправки # Это значит, чьи подписи мы будем точно проверять DKIM_KNOWN_SIGNERS = paypal.com : gmail.com dkim_verify_signers = $dkim_signers : KNOWN_DKIM_SIGNERS # ... # Создаем сам ACL в секции "begin acl" # ... # DKIM check acl_check_dkim: accept hosts = +relay_from_hosts accept authenticated = * # Message without sign accept dkim_status = none condition = ${if eq {$acl_c_dkim_hdr}{1} {no}{yes}} set acl_c_dkim_hdr = 1 add_header = :at_start:X-DKIM: Exim 4.71 on $primary_hostname (no dkim signature) # Message with sign, begin warn condition = ${if eq {$acl_c_dkim_hdr}{1} {no}{yes}} set acl_c_dkim_hdr = 1 add_header = :at_start:X-DKIM: Exim 4.71 on $primary_hostname # Message with sign, bad signature deny dkim_status = fail message = Rejected: $dkim_verify_reason logwrite = X-Auth: DKIM test failed: (address=$sender_address domain=$dkim_cur_signer), signature is bad. # Message with sign, invalid signature accept dkim_status = invalid add_header = :at_start:Authentication-Results: $primary_hostname $dkim_cur_signer ($dkim_verify_status); $dkim_verify_reason logwrite = X-Auth: DKIM test passed (address=$sender_address domain=$dkim_cur_signer), but signature is invalid. # Message with sign, good signature accept dkim_status = pass add_header = :at_start:Authentication-Results: $primary_hostname; dkim=$dkim_verify_status header.i=@$dkim_cur_signer logwrite = X-Auth: DKIM test passed (address=$sender_address domain=$dkim_cur_signer), good signature. accept

10 серпня 2017 · 2 хвилин · 262 слів · dimetrius

Смена email адреса отправителя в exim

Такая себе мини заметка, оказывается в exim уже интегрирован механизм смены email адреса отправителя. В debian пакетах так точно. Достаточно в файл /etc/email-addresses добавить то, что нам нужно. Стандартное содержимое файла # cat /etc/email-addresses 1 2 3 4 5 6 7 8 9 # This is /etc/email-addresses. It is part of the exim package # # This file contains email addresses to use for outgoing mail. Any local # part not in here will be qualified by the system domain as normal. # # It should contain lines of the form: # #user: [email protected] #otheruser: [email protected]

2 жовтня 2016 · 1 хвилина · 96 слів · dimetrius

Exim - пересылка email писем определённого домена отправителя на smarthost

На одном из серверов крутятся несколько сайтов, но почта с этих сайтов должна рассылаться с другого сервера. Пришлось искать решение вопроса. И оно нашлось… По сути работает условие, если домен отправителя равен указанному нами домену, то почта отправляется на smarthost, который в свою очередь принимает почту от первого сервера без авторизации. Настраивалось это на Ubuntu, Debian с этим чудным конфигом… На CentOS, RedHat будет немного проще. Открываем на редактирование файл /etc/exim4/exim4.conf.template Добавляем блок smart_route 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 begin routers smart_route: condition = ${extract{smart_host}{${lookup{$sender_address_domain}lsearch{/etc/exim4/staticroutes}{$value}fail}}} driver = manualroute transport = remote_smtp route_list = "* ${extract{smart_host}{${lookup{$sender_address_domain}lsearch{/etc/exim4/staticroutes}{$value}fail}}}" #smarthost: # driver = manualroute # domains = ! +local_domains # transport = remote_smtp # route_list = * smartrelay.domain.com # no_more # no_verify dnslookup: driver = dnslookup domains = !+local_domains transport = remote_smtp no_more Остальное приведено для примера, т.е. по сути добавляем блок сразу после begin routers. Вторым шагом создаём файл /etc/exim4/staticroutes с содержимым ...

13 квітня 2016 · 2 хвилин · 247 слів · dimetrius

Добавляем DKIM подписи в Exim, параллельно настраиваем SPF, DMARC на примере CentOS

Создаём директорию 1 mkdir /etc/exim/dkim Генерируем ключ 1 openssl genrsa -out /etc/exim/dkim/example.com.key 1024 из него генерируем публичную часть ключа 1 openssl rsa -in /etc/exim/dkim/example.com.key -out /etc/exim/dkim/example.com.key.pub -pubout Прописываем в DNS публичную часть ключа 1 mail._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=MIGfMA0GCSqGSIb3DQEBA..." Проверяем что запись корректно добавилась на DNS dig mail._domainkey.example.com TXT Настраиваем Exim 1 2 3 4 5 6 7 8 9 10 11 12 13 14 begin transports # тут добавляем наш DKIM DKIM_DOMAIN = ${lc:${domain:$h_from:}} DKIM_FILE = /etc/exim/dkim/${lc:${domain:$h_from:}}.key DKIM_PRIVATE_KEY = ${if exists{DKIM_FILE}{DKIM_FILE}{0}} remote_smtp: driver = smtp dkim_domain = DKIM_DOMAIN dkim_private_key = DKIM_PRIVATE_KEY dkim_selector = mail dkim_canon = relaxed dkim_strict = yes Не забываем перезагрузить Exim (service exim reload) Параллельно обычно приходится настраивать SPF и DMARC. Это не сложно. Добавляем на DNS подобные записи: 1 2 example.com. IN TXT "v=DMARC1\;p=reject" example.com. IN TXT "v=spf1 mx a ip4:222.222.222.222 ~all" 222.222.222.222 это IP для примера, обычно приходится прописывать, когда почта отправляется с интерфейсного IP, который не совпадает с записями A, MX… статья не закончена

13 квітня 2016 · 1 хвилина · 163 слів · dimetrius