HOWTO - Настройка исходящей почты для OTRS

Настройка исходящей почты для OTRS

Ранее, я думал как настроить домашний сервер, чтобы можно было отправлять письма и не попадать в спам. Теперь я нашел правильный путь.

Имеется домашний сервер, подключенный к сети IDNET Kazakhtelecom, адреса выдаются динамически. На сервере установлена и настроена OTRS. Прием входящих сообщений не вызывает трудностей. Проблемы с исходящими серверами. Почтовый домен подключен к yandex почте.

Шаг №1 - Настройка spf записей

Нужно перенести почту на yandex.Почту, переносим днс-сервер и почтовый сервер. После успешной настройки, Yandex создаст для домена spf-, dkim-записи. Можно будет свободно через Веб-интерфейс отправлять и принимать почту. Также будут работать smtp-, imap-, pop3-сервисы.

Шаг №2 - Настройка spf записей

Мои неудачи были связаны с тем, что я редактировал spf-запись для всего домена. Но, оказалось, нужно еще создавать spf-запись для исходящего сервера. Например, наш домен - edenprime.kz, создадим следующие записи:

ИмяТипЗначениеДинамическое обновление
otrsAIP-адресДа
otrsTXTv=spf1 ip4:$IP include:_spf.yandex.ru ~allДа
otrs._domainkeyTXTv=DKIM1; k=rsa; t=s; s=email; p=PUBLICKEYНет

В Connect.Yandex нужно добавить DKIM-запись исходящего сервера. Здесь подробная инструкция.

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

Шаг №3 - Настройка таймера для динамического обновления

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

 sudo yum install perl-LWP-Protocol-https

Скрипт нужно разместить в /usr/local/bin/yddns.pl

#!/usr/bin/perl

use LWP::UserAgent;

my $current_ip = `curl https://myexternalip.com/raw`;

my %records = (
    otrs => {
        id => "XXXXXXXX",
        content => "$current_ip",
        subdomain => "otrs"
        },
    spf => {
        id => "XXXXXXXX",
        content => "v=spf1 ip4:$current_ip include:_spf.yandex.ru ~all",
        subdomain => "otrs"
    }
);

my $token = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
my $domain = "edenprime.kz"; 
my $TTL = "900"; 
my $uri ="https://pddimp.yandex.ru/api2/admin/dns/edit"; 

for my $record (keys %records) {
        my $ua = LWP::UserAgent->new( ssl_opts => { verify_hostname => 0 } );

        my $response = $ua->post( $uri,
                [
                'domain' => $domain,
                'subdomain' => $records{$record}{subdomain},
                'record_id' => $records{$record}{id},
                'content' => $records{$record}{content},
                'TTL' => $TTL,
                ],
                'PddToken' => $token,
        );

        if ( $response->is_success ) {
                print $response->decoded_content;
        } else {
                die $response->status_line;
        }
}

Необходимые файлы для systemd

cat<<EOF | sudo tee /etc/systemd/system/yddns.timer
[Unit]
Description=Update otrs.edenprime.kz ip address at yandex dns service

[Timer]
OnCalendar=*:0,15,30,45
AccuracySec=1s

[Install]
WantedBy=timers.target
EOF

cat<<EOF | sudo tee /etc/systemd/system/yddns.service
[Unit]
Description=Update otrs.edenprime.kz ip address at yandex dns service

[Service]
Type=oneshot
ExecStart=/usr/local/bin/yddns.pl

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl enable --now yddns.timer 

Шаг №4 - Ожидаем обновления

Теперь нужно обновить днс-записи, подождать пока днс-записи обновятся по всему миру, затем можно отправить тестовое письмо на support@edenprime.kz