Alexander Litvinenko: ваш вопрос исходит из некорректного предположения что в UTF-8 не влазит что-то, что влазит в UTF-16. На самом деле наоборот, UTF-8 универсальней, в нее влазит больше символов. И иврит есть в обоих кодировках.
Иван Украинцев: а почему ошибка аутентификации? аутентификации в SMTP не может зависеть от того, по какому имени сервера было произведено соединение, если они приходят на один и тот же IP.
А вообще я бы поискал проблемы в DNS, напишите где-нибудь имя сервера по которому не приходят соедининения и имя по которому прошло соединение.
Иван Украинцев: а SMTP ваш или провайдера? Если провайдера - попробуйте обратиться в поддержку, если ваш - проверьте журнал сервера и повспоминайте не включали ли вы fail2ban, например.
Арсен: вам в другом ответе дали правильное решение. DMARC в настоящее время поддерживают все крупные сервисы (GMail, Hotmail/Outlook, Yahoo, Mail.Ru и частично Yandex).
К этому надо добавить, что SPF защищает только envelope-from адрес, не защищает адрес From:, поэтому его бесполезно использовать для защиты от спуфинга. Для защиты от спуфинга DMARC обязателен.
SPF надо делать для каждого поддомена, можете сделать wildcard
*.mydomain.com IN TXT ...
пример для вашего случая
v=spf1 a mx include:mailgun.org ~all
но если у вас много MX (а в примере их много) то лучше MX в SPF не включать, а точно так же включать SPF предоставляемый провайдером через include
v=spf1 include:mailgun.org include:provider.example.com include:provider2.example.net ~all
т.к. число DNS-запросов на обработку SPF не должно превышать 10, а на каждую MX-запись требуется запрос.
LittleBuster: Попробуйте добавить Connection: close к заголовкам и закрывать сокет. Если и это не поможет, тогда надо смотреть на ваши обертки. Как минимум, в обертках необходимо проверять сколько байт реально отправлено в send(), т.к. send() не гарантирует отправку всех данных, но здесь проблема скорей всего не в этом.