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?
local_interfaces = MAIN_LOCAL_INTERFACES

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?
#local_interfaces = MAIN_LOCAL_INTERFACES
local_interfaces = <; ::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:

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?

  • Run lsof -i:25 to see on which interface exim is listening as a start – minniux Mar 17 '13 at 2:21

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.

  • 1
    Contact your ISP and see if there is a whitelist process to remove the port 25 block. There are more than a few that block port 25 by default because of the spambot problem, and if you demonstrate competence by asking to have it removed for your connection, some have a procedure to do so. "You never know until you ask." If they refuse and say TOS violation, then using a VPS to do it is about the next best option. – Todd Lyons Mar 17 '13 at 23:43

I have had a similar problem but not quite the same. My mail server kept getting flagged as a spammer by Spamhaus. I checked everything including outgoing connections on port 25.

None, niente, nada!

I tried to turn off the mail server. Still reported by Spamhaus.

Turned off the router … and no more Spamhaus flagging! Turned it back on and within an hour flagged again.

The router belonged to the ISP so I talked to them and guess what? They did not care. After complaining a couple of times they did the only sensible thing (at least in their opinion, apparently) they blocked port 25 incoming. It did stop the spamming, indeed, but it also rendered my mailserver useless. I complained several times to the ISP, but they did not care.

Luckily, I had other problems with this ISP and had just received a new (cheaper and faster) incoming line. This line had the problem of not having a permanent IP address, which I skirted by automatically updating the DNS on a regular basis.

I have subsequently set up a cheap virtual server at one of the international providers and use that for outgoing mail and as a backup for incoming mail, should my main connection again suffer from port 25 blocking. The reason for using a hosted server for outgoing mail is the fact that almost everyone now blocks incoming mail from ISPs they either consider domestic or are not big enough to be able to complain hard enough for the main mail providers to care. (Google, Microsoft, Mimecast and other, do you listen????)

  • Less would be more here. In other words: change ISPs, or stand up a virtual server. – Andrew Schulman Apr 9 at 12:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.