[nos-bbs] smtp gateway control
Michael Fox - N6MEF
n6mef at mefox.org
Tue Dec 6 00:34:10 EST 2011
We've configured an e-mail gateway to allow packet users to send to Internet
email addresses. But JNOS has no way to control when the gateway is used.
We really need a way to control when the smtp gateway is used (and not
JNOS can talk SMTP just fine with other JNOS systems. But it evidently does
not adhere to the current protocol very well which makes it problematic when
talking with non-JNOS SMTP mailers. For example, I get this message in the
log ever time JNOS connects to a current SMTP mailer:
Dec 5 20:58:31 cpk postfix/smtpd: improper command pipelining
after HELO from w6xsc-4.ampr.org[22.214.171.124]
Another problem with the JNOS SMTP server is a complete lack of security
mechanisms, such as checks, filters, etc. which are part of any typical
internet mail gateway. This isn't a complaint, just a fact.
I'd like to allow JNOS to talk directly to any machine in my domain.txt, and
any machine with either a 44.x address or an ampr.org domain name. Anything
else should go to the smtp gateway for handling.
The "smtp gateway" command is described in the manual as:
Displays or sets the host to be used as a "smart" mail relay. Any mail sent
to a host not in the domain.txt file or not found via a nameserver query,
will instead be sent to the gateway for forwarding.
The problem with this is that JNOS does a DNS query for any mail destination
that is not in domain.txt. We can turn off MX queries (with smtp usemx no)
but JNOS still performs an A record query. When it receives the answer, it
attempts to connect directly to the remote host. With "smtp usemx yes" it
will attempt to connect directly to the MX for the remote host. So there's
no way to control when JNOS uses the smtp gateway. In fact, as long as DNS
is configured, and you're sending to a proper internet email address, JNOS
will NEVER use the gateway since it will always get an answer from the
nameserver. That's just not right.
I currently have iptables set to disallow SMTP connections on the
JNOS-to-Linux tunnel that are from JNOS to anything other than the SMTP
gateway. This means that JNOS will try over and over, but will be
unsuccessful in contacting the remote host. It will then try to send to
However, this workaround has a problem. Since it relies on a connection
failure, it can end up being used unintentionally, such as when the remote
system is another JNOS system. If that remote system is down temporarily,
JNOS tries and fails to connect, so it ships it to the gateway. The gateway
then tries to deliver it via the internet (out to the internet, back in via
the UCSD gateway, etc.) which is not allowed on many JNOS systems.
What we really need is a way to tell JNOS when and when not to use the "smtp
gateway". I think the easiest approach would be to define when JNOS should
attempt a direct connect and then let the SMTP gateway handle anything else.
It seems that the best approach would be to allow either IP address or
domain name nomenclature. Here's one example:
smtp direct local # host is in domain.txt
smtp direct address 126.96.36.199/8
smtp direct domain ampr.org
Instead of "direct", something like "nogateway" could be used.
This basically says, if the host is in domain.txt or it has an address of
44.x or it has a domain of ampr.org, then send it direct. Otherwise, use
Is this doable?
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the nos-bbs