DKIM на хостинге MasterHost

Доброго времени суток!

Пробовал прописать стандартный wa-config/mail.php не проходит.

Хостер предлагает свою реализацию отправки писем:

<?php

// Если нужно показать лог SMTP-сессии, то можно раскомментировать следующую строчку.
// $_SERVER['debug'] = true;

function MailSmtp($reciever, $subject, $content, $headers, $debug = 0) {

  $smtp_server = 'smtp.masterhost.ru'; // адрес SMTP-сервера
  $smtp_port = 25; // порт SMTP-сервера
  $smtp_user = 'user@domen.ru'; // Имя пользователя для авторизации на SMTP-сервере
  $smtp_password = 'pAsSwORd'; // Пароль для авторизации на SMTP-сервере
  $mail_from = 'frommailbox@domen.ru'; // Ящик, с которого отправляется письмо

  $sock = fsockopen($smtp_server,$smtp_port,$errno,$errstr,30);

  $str = fgets($sock,512);
  if (!$sock) {
    printf("Socket is not created\n");
    exit(1);
  }

  smtp_msg($sock, "HELO " . $_SERVER['SERVER_NAME']);
  smtp_msg($sock, "AUTH LOGIN");
  smtp_msg($sock, base64_encode($smtp_user));
  smtp_msg($sock, base64_encode($smtp_password));
  smtp_msg($sock, "MAIL FROM: <" . $mail_from . ">");
  smtp_msg($sock, "RCPT TO: <" . $reciever . ">");
  smtp_msg($sock, "DATA");

  $headers = "Subject: " . $subject . "\r\n" . $headers;

  $data = $headers . "\r\n\r\n" . $content . "\r\n.";

  smtp_msg($sock, $data);
  smtp_msg($sock, "QUIT");

  fclose($sock);
}


function smtp_msg($sock, $msg) {

  if (!$sock) {
    printf("Broken socket!\n");
    exit(1);
  }

  if (isset($_SERVER['debug']) && $_SERVER['debug']) {
    printf("Send from us: %s<BR>", nl2br(htmlspecialchars($msg)));
  }
  fputs($sock, "$msg\r\n");
  $str = fgets($sock, 512);
  if (!$sock) {
    printf("Socket is down\n");
    exit(1);
  }
  else {
    if (isset($_SERVER['debug']) && $_SERVER['debug']) {
      printf("Got from server: %s<BR>", nl2br(htmlspecialchars($str)));
    }

    $e = explode(" ", $str);
    $code = array_shift($e);
    $str = implode(" ", $e);

    if ($code > 499) {
      printf("Problems with SMTP conversation.<BR><BR>Code %d.<BR>Message %s<BR>", $code, $str);
      exit(1);
    }
  }
}

?>

Соответственно не помогло, подскажите где может быть ошибка?

2 ответа

  • 3
    replicant 19 апреля 2018 10:36 #
    Пробовал прописать стандартный wa-config/mail.php не проходит.


    Не проходит что? Начнем с того каким методом вы отправляете письма? SMTP или phpmail?

    Если SMTP, то DKIM настраивайте в редакторе DNS для вашего домена (для мастерхоста в панели управления вашим доменом все есть уже и в редакторе DNS появится), а в Инсталлере не трогайте ничего на тему DKIM вообще. Есс-но при этом надо иметь учетную запись на почтовом сервере мастерхоста (или любого другого) и прописать её в mail.php.

    Если второй способ, то в Инсталлере включаете DKIM и настраиваете вашу DNS запись соответственно, но уже панель управления у мастерхоста на тему DKIM не трогаете и про mail.php забываете.

    Почта через SMTP может ходить через кого угодно (Гугл, Мэйлру, Яндекс, Мастерхост). Домен может быть делегирован куда угодно и там всегда настраивается DKIM. А уже откуда взять DKIM - это зависит от способа отправки.

    Выберите решение из предложенных выше по тексту.

    • +1
      oberon_1978 oberon_1978 19 апреля 2018 11:52 #

      Всё оказалось просто. Заветная подпись настроена за 30 мин (с учетом ожидания регистрации в DNS).

      Идем в Рассылки - Редактировать отправителя - Транспорт SMTP (тех поддержка ответила, что подпись действует только при отправке через SMTP) - заполняем.

      Не закрываем и идём в редактор DNS на хостинге.

      Создаем новую запись с данными нашего ключа -

      через 20 мин заветная подпись имеется.

      Спасибо @replicant, дал верное направление.

      Оставлю здесь, может кому пригодится

Эта тема в архиве. Добавление комментариев к ней отключено.