Debian – exim is not accepting external connections

debianemail-bounceseximsmtp

Update: It's definitely my ISP blocking port 25. I told Exim to listen on a non-standard port, and then checked from a remote computer to that port, and it went through just fine.

So, I guess I have a new question. Is there a good way to get around this?

I no I can't specify a port in the MX record (why didn't anyone think of this when they were coming up with DNS?), but a service that can forward mail to a server on a non-standard port would work.

I've seen no-ip.com has such a service called Reflector. It's not very expensive, but if there are any other, cheaper methods, I'd love to hear about them.

I'm still baffled as to why it just today stopped working, though.


Original Question

I hate asking this, but I've already Googled everything I can think to no avail, but this seems like such a simple thing, so I don't know why I can't figure it out. But, here it goes anyway.

I have a home server set up with Apache for HTTP and Exim for SMTP. I need to be able to accept mail straight to my home computer. Up until today, I had no problems. I don't believe I changed anything on my end, but suddenly, I'm not getting any email.

I checked MX setting in DNS, and they're fine. I checked the port forwarding on my router, and it looks fine (and external connections to Apache are still coming through).

So, I check that Exim is working properly. From localhost, I can telnet into Exim, and it works fine. Additionally, I can telnet into Exim from other computers on the network, and it works fine. However, if I try to telnet from outside, I get Unable to connect to remote host: Connection timed out.

So, I tried to do dpkg-reconfigure exim4-config (I'm on Ubuntu 12.10, by the way), and make sure that everything's set up properly there. No problems. I look in my config and find this:

# listen on all all interfaces?
.ifdef MAIN_LOCAL_INTERFACES
local_interfaces = MAIN_LOCAL_INTERFACES
.endif

Some googling leads me to believe that local_interfaces controls what exim will listen to. So I try to change this according to the exim documentation, and make it this:

# listen on all all interfaces?
#.ifdef MAIN_LOCAL_INTERFACES
#local_interfaces = MAIN_LOCAL_INTERFACES
#.endif
local_interfaces = <; ::0 ; 0.0.0.0

I restart exim, and nothing changes.

So, that's where I'm at now. It's kind of important that I get this fixed soon, so any ideas what else I might check would be appreciated.

P.S. Since commenting won't give my proper formatting, I'm replying here:

lsof -i:25: I'm not really sure what I'm looking for, but here's the output:

COMMAND   PID        USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
exim4   12386 Debian-exim    3u  IPv6 24476126      0t0  TCP *:smtp (LISTEN)
exim4   12386 Debian-exim    4u  IPv4 24476127      0t0  TCP *:smtp (LISTEN)

P.P.S. According to this page, my ISP blocks port 25 inbound (and outbound). But that page was written several months ago, and the problem just appeared today (or maybe yesterday), so is there any way I can check to see if that's the problem?

Best Answer

I'm still baffled as to why it just today stopped working, though.

Maybe your mail server had a busy day yesterday so the ISP noticed your abuse of the ToS?

Notice, that sending mail to another port would probably still conflict with your ISPs terms if it was running on some non-standard port, so I won't give explicit advice or recommend that to you.
I, for example, did receive a warning once from my ISP regarding "excessive" incoming and outgoing mail.

Discussing legitimation for this rule is something to do somewhere else.

You could, however, set up a cheap VPS somewhere to handle mail.
How to process that mail (directly on the VPS, or at home) is your task to evaluate.

Your remote node not necessarily needs to run its own mail server. Using a mail proxy like nginx - or even plain TCP proxying - would be fine, too.