How to Fix "stat=Deferred: Connection timed out error in sendmail"

I got this error while trying to send out mail using my MTA which in my case was sendmail.

Reason:

If you receive this error then it means that your mail server is unable to connect to your smtp provider most probably due to firewall. So check your firewall and if your server is listening to port 25, 587 and 465 which are the smtp ports unless you have specified some custom port no.

# netstat -ntlp | grep sendmail
tcp   0   0.0.0.0:587      0.0.0.0:*    LISTEN    1419/sendmail
tcp   0   0 0.0.0.0:465    0.0.0.0:*    LISTEN    1419/sendmail
tcp   0   0 0.0.0.0:25     0.0.0.0:*    LISTEN    1419/sendmail

Many a times it happens that your network firewall might be blocking some particular port so you can check using telnet.

Solution:

Make the below changes in your sendmail.mc file

Comment out the below shown line as this will restrict your mail server to only listen to localhost loopback address and no any other address

NOTE: In sendmail "#" is not used to comment out any line. You need to use "dnl" or "dnl #"

dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

or

instead of commenting the above line you can change it to

DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl

In case you are using port 587 uncomment this line

DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl   
and for **port 465** uncomment below line  
DAEMON_OPTIONS(`Port=smtps, Name=TLSMTA, M=s')dnl   

You can use ssl ports by adding these two lines in your sendmail.mc file

define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl  
define(`ESMTP_MAILER_ARGS', `TCP $h 465')dnl Save and exit your file
# m4 sendmail.mc > sendmail.cf   
# service sendmail restart

For my configuration file you can refer this post

Configuring MAIL server using sendmail

Now re-try to connect your SMTP server as in my case it is smtp.gmail.com using port no.

# telnet smtp.gmail.com 25
Trying 74.125.127.109...
 Connected to smtp.gmail.com.
 Escape character is '^]'.
 220 mx.google.com ESMTP io2sm27316728pbc.24

So it shows connected, similarly you can check for other port no.