Change status code for "Host not found"

2019-09-16 Thread Helmut Schneider
Hi,

I'm running postfix as a relay connected via VPN. If the VPN is down
mails are rejected:

relay=none, delay=0.09, delays=0.06/0.02/0.01/0, dsn=5.4.4,
status=bounced (Host or domain name not found. Name service error for
name=EXCHANGE01 type=: Host not found)

Is there a way to change the dsn to 4xx and deliver it when the VPN is
up again?

Thank you!



Re: Change status code for "Host not found"

2019-09-16 Thread Wesley Peng

Hi

on 2019/9/12 22:01, Helmut Schneider wrote:

relay=none, delay=0.09, delays=0.06/0.02/0.01/0, dsn=5.4.4,
status=bounced (Host or domain name not found. Name service error for
name=EXCHANGE01 type=: Host not found)


This is a network issue rather than postfix problem I may think.
You should fix up the network after VPN is down.

regards.


Re: Change status code for "Host not found"

2019-09-16 Thread Wietse Venema
Helmut Schneider:
[ Charset ISO-8859-1 converted... ]
> Hi,
> 
> I'm running postfix as a relay connected via VPN. If the VPN is down
> mails are rejected:
> 
> relay=none, delay=0.09, delays=0.06/0.02/0.01/0, dsn=5.4.4,
> status=bounced (Host or domain name not found. Name service error for
> name=EXCHANGE01 type=: Host not found)

It's status=bounced (dsn=5.4.4) because Postfix received a DNS
NXDOMAIN (name does not exist) response for the name 'EXCHANGE01'.

> Is there a way to change the dsn to 4xx and deliver it when the VPN is
> up again?

http://www.postfix.org/postconf.5.html#default_delivery_status_filter
Look under the examples for smtp_delivery_status_filter. Here is
an untested variant that should work.

/etc/postfix/main.cf:
   smtp_delivery_status_filter = pcre:/etc/postfix/smtp_dsn_filter

/etc/postfix/smtp_dsn_filter:
/^5(\.\d+\.\d+ Name service error for name=EXCHANGE01/ 4$1

You can't use http://www.postfix.org/postconf.5.html#smtp_dns_reply_filter
because that feature requires that the server returns a reply, not
NXDOMAIN.

Wietse


Re: Change status code for "Host not found"

2019-09-16 Thread Wietse Venema
Wietse Venema:
> Helmut Schneider:
> [ Charset ISO-8859-1 converted... ]
> > Hi,
> > 
> > I'm running postfix as a relay connected via VPN. If the VPN is down
> > mails are rejected:
> > 
> > relay=none, delay=0.09, delays=0.06/0.02/0.01/0, dsn=5.4.4,
> > status=bounced (Host or domain name not found. Name service error for
> > name=EXCHANGE01 type=: Host not found)
> 
> It's status=bounced (dsn=5.4.4) because Postfix received a DNS
> NXDOMAIN (name does not exist) response for the name 'EXCHANGE01'.
> 
> > Is there a way to change the dsn to 4xx and deliver it when the VPN is
> > up again?
> 
> http://www.postfix.org/postconf.5.html#default_delivery_status_filter
> Look under the examples for smtp_delivery_status_filter. Here is
> an untested variant that should work.
> 
> /etc/postfix/main.cf:
>smtp_delivery_status_filter = pcre:/etc/postfix/smtp_dsn_filter
> 
> /etc/postfix/smtp_dsn_filter:
> /^5(\.\d+\.\d+ Name service error for name=EXCHANGE01/ 4$1

Should be:

/^5(\.\d+\.\d+ Name service error for name=EXCHANGE01)/ 4$1

(i.e. there was no closing ')').

Wietse
> You can't use http://www.postfix.org/postconf.5.html#smtp_dns_reply_filter
> because that feature requires that the server returns a reply, not
> NXDOMAIN.
> 
>   Wietse
> 


Re: Change status code for "Host not found"

2019-09-17 Thread Helmut Schneider
Wietse Venema wrote:

> Helmut Schneider:
> [ Charset ISO-8859-1 converted... ]
> > Hi,
> > 
> > I'm running postfix as a relay connected via VPN. If the VPN is down
> > mails are rejected:
> > 
> > relay=none, delay=0.09, delays=0.06/0.02/0.01/0, dsn=5.4.4,
> > status=bounced (Host or domain name not found. Name service error
> > for name=EXCHANGE01 type=: Host not found)
> 
> It's status=bounced (dsn=5.4.4) because Postfix received a DNS
> NXDOMAIN (name does not exist) response for the name 'EXCHANGE01'.
> 
> > Is there a way to change the dsn to 4xx and deliver it when the VPN
> > is up again?
> 
> http://www.postfix.org/postconf.5.html#default_delivery_status_filter
> Look under the examples for smtp_delivery_status_filter. Here is
> an untested variant that should work.
> 
> /etc/postfix/main.cf:
>smtp_delivery_status_filter = pcre:/etc/postfix/smtp_dsn_filter
> 
> /etc/postfix/smtp_dsn_filter:
> /^5(\.\d+\.\d+ Name service error for name=EXCHANGE01/ 4$1

Works like a charm, thank you!