On a cPanel server you can use the Exim Configuration Manager advanced editor to add a custom HELO ACL.
Go to Service Configuration » Exim Configuration Manager
Click on Advanced Editor.
Scroll down to acl_smtp_helo and enter the following lines under the ”’custom_begin_smtp_helo”’ header.
drop
condition = ${if eq {$sender_helo_name}{ylmf-pc} {yes}{no}}
log_message = HELO/EHLO - ylmf-pc blocked
message = ylmf-pc blocked
Enter the following line under ”’custom_end_smtp_helo”’
accept
{{box_note|If you do not enter this ALL mail will be rejected.}}
You can also specify multiple conditions.
acl_check_helo:
accept
hosts = +own_hosts
# If the HELO pretend to be this host
deny condition = ${if or { \
{eq {${lc:$sender_helo_name}}{example.com}} \
{eq {${lc:$sender_helo_name}}{1.2.3.4}} \
} {true}{false} }
# by default we accept
accept
== Testing ==
You can test the ACL by connecting to the server using telnet. Issuing a helo name of “ylmf-pc” should be blocked.
[wattersm@wattersm.liquidweb.com] ~ >> telnet 1.2.3.4 25 Trying 1.2.3.4... Connected to 1.2.3.4. Escape character is '^]'. 220-host2.example.com ESMTP Exim 4.84 #2 Tue, 17 Feb 2015 10:53:11 -0500 220-We do not authorize the use of this system to transport unsolicited, 220 and/or bulk e-mail. helo ylmf-pc 550 ylmf-pc blocked Connection closed by foreign host.