*.aspmx.l.google.com : *.gmail-smtp-in.l.google.com
domainlist single_domain_mx = +google_mxen
+domainlist ipv4_only_domain_mx = +google_mxen
<%- if @is_mailrelay -%>
# Domains we relay for; that is domains that aren't considered local but we
# expensive, you can specify the networks for which a lookup is done, or
# remove the setting entirely.
host_lookup = *
-dns_ipv4_lookup = +google_mxen
# If this option is set, then any process that is running as one of the
# listed users may pass a message to Exim and specify the sender's
gecos_name = $1
# Do *not* include the body of the original message in a bounce
-# The combinaton of bounce_return_message and bounce_return_body
+# The combination of bounce_return_message and bounce_return_body
# allows us to return only the headers within a bounce
bounce_return_message = true
{${lookup{$local_part}lsearch{/etc/exim4/grey_users}{$local_part}{}}}} : \
${lookup{$local_part}lsearch{/var/lib/misc/$primary_hostname/mail-greylist}{$local_part}{}}
<%- if @is_rtmaster -%>
+RT_SUBJECT = Subject: ${if and {{first_delivery}{match {${sg {$rh_Subject:}{\N\n\s+\N}{ }}}{\N(?is)(.*?)\[?debian rt\]?[:\s]*(.*)\N}}} {$1$2}{$h_subject:}}
RT_QUEUE_MAP = /srv/rt.debian.org/mail/rt_queue_map
<%- end -%>
${readsocket{/var/run/postgrey/socket}{$acl_m_pgr}\
{5s}{}{action=DUNNO}}\
}{action=}{}}
- message = ${sg{$acl_m_pgr}{^\\w+\\s*}{}}
+ message = ${sg{$acl_m_pgr}{\N^\w+\s*\N}{}}
log_message = greylisted.
condition = ${if eq{${uc:${substr{0}{5}{$acl_m_pgr}}}}{DEFER}}
domains = +handled_domains
local_parts = GREYLIST_LOCAL_PARTS
condition = ${if eq{${uc:${substr_0_7:$acl_m_pgr}}}{PREPEND}}
- message = ${sg{$acl_m_pgr}{^\\w+\\s*}{}}
+ message = ${sg{$acl_m_pgr}{\N^\w+\s*\N}{}}
<%- end -%>
deny hosts = ${if exists{/etc/exim4/host_blacklist}{/etc/exim4/host_blacklist}{}}
{match_domain{$item}{+single_domain_mx}}\
{remote_smtp_single_domain}{remote_smtp}\
}
- ignore_target_hosts = +reservedaddrs
+ ignore_target_hosts = +reservedaddrs : \
+ ${if forany{${lookup dnsdb{>: mxh=$domain}}}\
+ {match_domain{$item}{+ipv4_only_domain_mx}}\
+ {::::/0}{}\
+ }
no_more
postmasterish:
pipe_transport = rt_pipe
data = "|/usr/bin/rt-mailgate --queue '${lookup{${sg{$local_part}{-comment}{}}}lsearch{RT_QUEUE_MAP}}' --url https://rt.debian.org/ --ca-file /etc/ssl/ca-debian/ca-certificates.crt --action ${if match{$local_part}{.*-comment.*}{comment}{correspond}}"
headers_remove = Subject
- headers_add = "Delivered-To: ${local_part}${local_part_suffix}@${domain}\nSubject: ${if and {{first_delivery}{match {$h_subject:}{(?is)(.*?)\\\\[?debian rt\\\\]?[:\\s]*(.*)}}} {$1$2}{$h_subject:}}"
+ headers_add = "Delivered-To: ${local_part}${local_part_suffix}@${domain}\nRT_SUBJECT"
# FIXME: figure out how to generalize this approach so that all of the following would work
# - rt+NNNN@rt.debian.org : attach correspondence to ticket (verbose)
pipe_transport = rt_pipe
data = "|/usr/bin/rt-mailgate --queue '${lookup{${sg{$local_part}{-comment}{}}}lsearch{RT_QUEUE_MAP}}' --url https://rt.debian.org/ --ca-file /etc/ssl/ca-debian/ca-certificates.crt --action ${if match{$local_part}{.*-comment.*}{comment}{correspond}}"
headers_remove = Subject
- headers_add = "Delivered-To: ${local_part}${local_part_suffix}@${domain}\nX-RT-Mode: quiesce\nSubject: ${if and {{first_delivery}{match {$h_subject:}{(?is)(.*?)\\\\[?debian rt\\\\]?[:\\s]*(.*)}}} {$1$2}{$h_subject:}}"
+ headers_add = "Delivered-To: ${local_part}${local_part_suffix}@${domain}\nX-RT-Mode: quiesce\nRT_SUBJECT"
rt_otherwise:
debug_print = "R: rt for $local_part@$domain"
pipe_transport = rt_pipe
data = "|/usr/bin/rt-mailgate --queue '${lookup{${sg{$local_part}{-(comment|done)}{}}}lsearch{RT_QUEUE_MAP}}' --url https://rt.debian.org/ --ca-file /etc/ssl/ca-debian/ca-certificates.crt --extension ticket --action ${if match{$local_part}{.*-comment.*}{comment}{${if match{$local_part}{.*-done.*}{correspond-resolve}{correspond}}}}"
headers_remove = Subject
- headers_add = "Delivered-To: ${local_part}${local_part_suffix}@${domain}\nSubject: ${if and {{first_delivery}{match {$h_subject:}{(?i)(.*?)\\\\[?debian rt\\\\]?[:\\s]*(.*)}}} {$1$2}{$h_subject:}}"
+ headers_add = "Delivered-To: ${local_part}${local_part_suffix}@${domain}\nRT_SUBJECT"
<%- end -%>
# Exim fails the router if it can't change to the user/group for delivery
# RETRY CONFIGURATION #
######################################################################
-# This single retry rule applies to all domains and all errors. It specifies
-# retries every 15 minutes for 2 hours, then increasing retry intervals,
-# starting at 2 hours and increasing each time by a factor of 1.5, up to 16
-# hours, then retries every 8 hours until 4 days have passed since the first
-# failed delivery.
-
# Domain Error Retries
# ------ ----- -------
-
begin retry
+## Note that retry rules specify when an address / host / mail should
+## become eligible for retrying. They do not specify when the retry
+## attempt will actually occur, as this is dependent on queue run
+## frequency and timing.
+
+# For mail to debian.org addresses, this rule starts with
+# retries every 10 minutes for 2 hours, then increasing retry intervals,
+# starting at 2 hours and increasing each time by a factor of 1.5, up to 16
+# hours, then retries every 8 hours until 14 days have passed since the first
+# failed delivery.
debian.org * F,2h,10m; G,16h,2h,1.5; F,14d,8h
+
+# Bounces should get retried every 10 minutes for up to 2 hours
* * senders=: F,2h,10m
+
+# Temporary errors at RCPT TO get retried at 5 minute intervals for
+# 2 hours, then 10 minute intervals for 4 hours, and finally at 15
+# minute intervals for 4 days. This assumes that the cause of the
+# error will get resolved quickly in most cases.
* rcpt_4xx F,2h,5m; F,4h,10m; F,4d,15m
+
+# For all remaining mails, addresses and hosts, this rule starts with
+# retries every 15 minutes for 2 hours, then increasing retry intervals,
+# starting at 2 hours and increasing each time by a factor of 1.5, up to 16
+# hours, then retries every 8 hours until 4 days have passed since the first
+# failed delivery.
* * F,2h,15m; G,16h,2h,1.5; F,4d,8h
# End of Exim 4 configuration