135

I can't send out emails,

need to look into the logs,

but where is the log?

7 Answers7

99

Where are the logs?

The default location depends on your linux/unix system, but the most common places are

  • /var/log/maillog
  • /var/log/mail.log
  • /var/adm/maillog
  • /var/adm/syslog/mail.log

If it's not there, look up /etc/syslog.conf. You should see something like this

mail.*         -/var/log/maillog

sendmail writes logs to the mail facility of syslog. Therefore, which file it gets written to depends on how syslog was configured.

If you system uses syslog-ng (instead of the more "traditional" syslog), then you'll have to look up your syslog-ng.conf file. You'll should something like this:

# This files are the log come from the mail subsystem.
#
destination mail     { file("/var/log/mail.log"); };
destination maillog  { file("/var/log/maillog"); };
destination mailinfo { file("/var/log/mail.info"); };
destination mailwarn { file("/var/log/mail.warn"); };
destination mailerr  { file("/var/log/mail.err"); };

Unable to send out emails?

One of the most common reason I've seen for a freshly installed sendmail not being able to send out emails is the DAEMON_OPTIONS being set to listen only on 127.0.0.1

See /etc/mail/sendmail.mc

dnl #
dnl # The following causes sendmail to only listen on the IPv4 loopback address
dnl # 127.0.0.1 and not on any other network devices. Remove the loopback
dnl # address restriction to accept email from the internet or intranet.
dnl #
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

If that's your case, remove the "Addr=127.0.0.1" part, rebuild your conf file and you're good to go!

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

[root@server]$ m4 sendmail.mc > /etc/sendmail.cf
[root@server]$/etc/init.d/sendmail restart

If you've been making changes to /etc/sendmail.cf manually thus far (instead of the *.m4 file) you can make similar changes in /etc/sendmail.cf. The offending line will look like this:

O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA

Change it to:

O DaemonPortOptions=Port=smtp, Name=MTA
Shawn Chin
  • 1,804
  • 11
  • 12
  • 1
    tail -f /var/log/maillog – Thomas Denton Aug 28 '09 at 14:49
  • 1
    I think, the key here is: "DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA" in /etc/mail/sendmail.mc Very good tip. Saved my day, thanks – serfer2 Jun 30 '17 at 07:17
  • 1
    But why remove 127.0.0.1? Having daemon to listen on public interface does not seem as most secure way to do. (I'd suggest to remove the whole "Unable to send out emails" part as it's not relevant to OP.) – Alois Mahdal Aug 24 '17 at 16:23
  • 1
    Being unable to send out emails seems relevant, as it's basically the topic behind the topic of the OP. At any rate, that info helped me get sendmail sending. In the process, I found that changing Addr to my machine's `192.168.x.x` IP, so sendmail only listens on my IP, is sufficient to enable sending without enabling receipt from the world. – David Yockey May 07 '21 at 17:16
24

check /var/log/maillog or /var/log/messages if you're on *nix

Also, if nothing is going out you may want to check your firewall as follows (be sure to do this as root):

[root@web01 ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ms-v-worlds 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:imaps 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:imap 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:pop3 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:smtp 
           tcp  --  anywhere             anywhere            tcp dpt:ssh state NEW recent: SET name: SSH side: source 
DROP       tcp  --  anywhere             anywhere            tcp dpt:ssh state NEW recent: UPDATE seconds: 60 hit_count: 8 TTL-Match name: SSH side: source 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain RH-Firewall-1-INPUT (0 references)
target     prot opt source               destination         
[root@xxxx ~]# 
bsisco
  • 349
  • 1
  • 2
5

Try looking at /var/log/mail.info or /var/log/mail.err

Amandasaurus
  • 30,211
  • 62
  • 184
  • 246
3

also check /var/spool/mqueue for current cached outgoing mail

Jimsmithkka
  • 570
  • 4
  • 13
3

For fedora et al. journalctl _COMM=sendmail will show messages from sendmail.

I was directed to this answer via a search. /var/log/mail only contains a 'statistics' file on Fedora. And all other mentioned directories are non-existent.

journalctl is not intuitive enough if you don't know what parameter to use, ymmv. so I've posted this solution.

comfytoday
  • 183
  • 1
  • 7
2
/var/log/maillog
Prody
  • 603
  • 3
  • 7
  • 16
-1

You can create your own log file

[admin@local ~]# killall sendmail
[admin@local ~]# touch /var/log/sendmail.log
[admin@local ~]# sendmail -bd -q15m >> /var/log/sendmail.log

and then

[admin@local ~]# tail -f /var/log/sendmail.log

451 4.0.0 /fake/path/sendmail.cf: line 0: cannot open: No such file or directory
Jonny
  • 11