Самая частая проблема с HELO - когда сервер находится во внутренней сети, за NAT, ему присваивают имя, которое можно разрезольвить только из этой внутренней сети. Например, mailserver.localdomain или exchange.internal.contusia.com. Чтобы этот сервер "принимали" внешние почтовики, надо во-первых, убедиться, что когда пакеты с этого сервера натятся на внешний адрес (source nat), этот адрес фиксированный. Во-вторых, создать запись во внешнем DNS, резольвящуюся в этот адрес. В-третьих, прописать на сервере это имя в качестве HELO (такая настройка есть во всех почтовиках, которые я видел).
Крайне желательно, чтобы была запись в обратной зоне для IP-адреса сервера, ссылающаяся на его HELO имя. В принципе, и без неё будет работать, но выше шанс попадания в спам, а некоторые совсем отмороженные почтовики просто отлупают почту, если обратная зона не резольвится или резольвится в что-то вида adsl-150-20-30-81.megaprovider.com
Проверяйте синтаксис SPF записи после изменений! Ошибки встречаются даже у серьёзных провайдеров. Мне встречались ошибки - ipv4 вместо ip4, указание имени хоста без "a:", указание "v=spf2" вместо "spf2.0/mfrom"
Запись SPF должна полностью содержаться в одной RR, разбивать на две RR нельзя.
Проверить SPF запись можно, например, здесь.
Помимо настройки собственно почтового сервера, если он находится в одной сети с другими машинами, необходимо настроить файрвол, который ограничивал бы использование 25-го порта TCP только этим сервером. Все прочие машины должны рассылать почту, используя этот почтовик как смартхост. Для доступа к внешним почтовым серверам клиентами принято использовать порт submission - TCP/587
Это спасёт от болезненного вопроса, а кто шлёт спам с нашей сети, когда в заголовках виден ваш адрес, а в логах сервера пусто.
Практику, когда внутреннюю (домашнюю, корпоративную) сеть прописывают как доверенную, разрешая свободную пересылку с внутренних адресов, надо признать плохой. Да, это удобно, потому что ничего не надо делать, когда кто-то хочет отправлять почту со своей корпоративной системы, но первый же вирус отправляет вас во все возможные блек-листы.
Как делать? Во-первых, убираем внутреннюю сеть из доверенных. Все внутренние системы подлежат регистрации, для них заводятся либо учётные записи (отправка через submission), либо делается разрешение по IP адресу. Для каждой системы соответственно назначается валидный e-mail (или поддомен), который эта система будет использовать при отправке.
Когда все системы зарегистрированы, для внутренней сети вообще блокируется приём почты по 25-му порту, поскольку то, что попытается отправить почту - наверняка вирус. Разрешение использовать 25-й порт остаётся только для внешних адресов (с соответствующим спам контролем), либо для внутреннего адреса внешнего шлюза, если он используется, и для зарегистрированных IP систем.
sergey@fidoman.ru