Dear good people of Exim-users,
I am running Exim 4.97 from my email server, Everything was working fine,
sending and receiving email without problem. However, lately I am unable
to send emails to gmail and even to your domain lists.exim.org and i get
this error:
Transport: alt1.gmail-smtp-in.l.google.com [142.250.153.27]:587 error
110: Connection timed out
first failed: 23-Nov-2023 10:53:50
last tried: 23-Nov-2023 10:53:50
next try at: 23-Nov-2023 10:58:50
Transport: gmail-smtp-in.l.google.com [142.251.31.27]:587 error 110:
Connection timed out
first failed: 23-Nov-2023 10:17:06
last tried: 23-Nov-2023 11:02:34
next try at: 23-Nov-2023 11:17:34
Transport: alt2.gmail-smtp-in.l.google.com [74.125.200.27] error 110:
Connection timed out
first failed: 19-Nov-2023 14:36:56
last tried: 23-Nov-2023 08:25:58
next try at: 23-Nov-2023 14:25:58
Transport: gmail-smtp-in.l.google.com [142.251.31.27] error 110:
Connection timed out
first failed: 19-Nov-2023 18:15:00
last tried: 23-Nov-2023 10:01:12
next try at: 23-Nov-2023 16:01:12
Transport: alt3.gmail-smtp-in.l.google.com [142.250.150.27] error 110:
Connection timed out
first failed: 19-Nov-2023 14:46:13
last tried: 23-Nov-2023 07:11:00
next try at: 23-Nov-2023 13:11:00
Transport: alt2.gmail-smtp-in.l.google.com [74.125.200.27]:587 error
110: Connection timed out
first failed: 23-Nov-2023 10:17:06
last tried: 23-Nov-2023 10:48:02
next try at: 23-Nov-2023 11:03:02
Transport: alt1.gmail-smtp-in.l.google.com [142.250.153.27] error 110:
Connection timed out
first failed: 19-Nov-2023 13:37:23
last tried: 23-Nov-2023 06:43:09
next try at: 23-Nov-2023 12:43:09
Transport: cumin.exim.org [37.120.190.30] error 110: Connection timed out
first failed: 23-Nov-2023 12:35:16
last tried: 23-Nov-2023 13:03:36
next try at: 23-Nov-2023 13:18:36
here my exim.conf:
#
# exim.conf {
#
# ----------------------------------------------------------------------
# > macro {
# ----------------------------------------------------------------------
CHECK_MAIL_HELO_ISSUED = 1
ROUTER_SMARTHOST =
smtp.aldimna.com
# ----------------------------------------------------------------------
# } >> PGSQL
# ----------------------------------------------------------------------
hide pgsql_servers =
SQL.HOSTNAME.COM/NAME.db/USERNAME/PASSWORD
PGSQL_LOG = \
INSERT INTO `spamlog` \
( `ID`, `MessageID`, `SenderIP`, `SenderPort`,
`SenderHostname`, `SenderHelo`, `SenderAddress`, `RecipientAddress`,
`Username`, `Domain`, `LoadAverage`, `SpamScore`, `MessageSize`,
`BodySize`, `MessageLines`, `BodyLines`, `ReceivedHeaders`,
`ReceivedProtocol`, `Cipher`, `Authenticated`, `SenderVerify`, `Age`,
`TimeStamp`) \
VALUES( '${quote_pgsql:$message_exim_id}', \
'${quote_pgsql:$header_Message-ID:}', \
'${quote_pgsql:$sender_host_address}', \
'${quote_pgsql:$sender_host_port}', \
'${quote_pgsql:$sender_host_name}', \
'${quote_pgsql:$sender_helo_name}', \
'${quote_pgsql:$sender_address}', \
CONCAT('${quote_pgsql:$original_local_part}','@','${quote_pgsql:$original_domain}'),
\
'${quote_pgsql:$local_part}', '${quote_pgsql:$domain}', \
'${quote_pgsql:$load_average}/1000', \
'${quote_pgsql:$header_X-Spam-Score:}', \
'${quote_pgsql:$message_size}', \
'${quote_pgsql:$message_body_size}', \
'${quote_pgsql:$message_linecount}', \
'${quote_pgsql:$body_linecount}', \
'${quote_pgsql:$received_count}', \
'${quote_pgsql:$received_protocol}', \
'${quote_pgsql:$tls_cipher}', \
'${quote_pgsql:$authenticated_id}', \
'${quote_pgsql:$header_X-Sender-Verify:}', \
'${quote_pgsql:$message_age}', \
NOW() )
# ----------------------------------------------------------------------
# } >> PGSQL
# ----------------------------------------------------------------------
addresslist noautoreply_senders =
/etc/d-mail.d/exim.d/conf.d/lists.d/autoreply.noanswer.list
domainlist blocked_domains =
lsearch;/etc/d-mail.d/exim.d/conf.d/lists.d/disabled-domains.list
SPAM_FILESIZE_LIMIT = 1M
VIRUS_FILESIZE_LIMIT = 32M
# ----------------------------------------------------------------------
# >> De-tainting {
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
DETAINT_FILE = /etc/d-mail.d/exim.d/conf.d/hack.d/detaint
BAD_CHARS = \N[^A-Za-z0-9_.-]+\N
DETAINT_LOCAL_PART = ${lookup{${sg{$local_part}{BAD_CHARS}{_}}}
lsearch*,ret=key{DETAINT_FILE}}
DETAINT_DOMAIN = ${lookup{${sg{$domain}{BAD_CHARS}{_}}}
lsearch*,ret=key{DETAINT_FILE}}
# ----------------------------------------------------------------------
# } >> De-tainting
# ----------------------------------------------------------------------
MAC_test = (tls_cipher:$tls_cipher)
# ----------------------------------------------------------------------
# > } macro
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
# > MAIN CONFIGURATION SETTINGS {
# ----------------------------------------------------------------------
never_users = root
timezone = EST
qualify_domain = aldimna.com
primary_hostname =
smtp.aldimna.com
smtp_active_hostname = smtp.aldimna.com
disable_ipv6=true
host_lookup = *
domainlist local_domains = ${\
lookup pgsql {\
SELECT domain FROM public.user WHERE
domain='${quote_pgsql:$domain}' \
UNION \
SELECT domain FROM public.alias WHERE
domain='${quote_pgsql:$domain}' \
UNION \
SELECT domain FROM public.catchall WHERE
domain='${quote_pgsql:$domain}'\
}\
}
domainlist relay_to_domains =
hostlist relay_from_hosts =
hostlist spf_white_hosts = smtp.aldimna.com
daemon_smtp_ports = 25 : 465 : 587
av_scanner
= clamd:/var/run/clamav/clamd.sock
spamd_address =
10.0.50.20 783
# ----------------------------------------------------------------------
# >> tls {
# ----------------------------------------------------------------------
tls_advertise_hosts = *
tls_certificate = /etc/ssl/certs/smtp.aldimna.com.cert.pem
tls_privatekey = /etc/ssl/private/smtp.aldimna.com.key.pem
tls_on_connect_ports = 465
tls_require_ciphers = ${if =={$received_port}{25}\
{DEFAULT}\
{HIGH:!MD5:!SHA1}}
# ----------------------------------------------------------------------
# >> exim_mainlog {
# ----------------------------------------------------------------------
log_selector = \
+address_rewrite +all_parents +arguments +connection_reject
+delay_delivery +delivery_size \
+dnslist_defer +incoming_interface +incoming_port
+lost_incoming_connection +queue_run \
+received_sender +received_recipients +retry_defer
+sender_on_delivery +size_reject \
+skip_delivery +smtp_confirmation +smtp_connection
+smtp_protocol_error +smtp_syntax_error \
+subject +tls_cipher +tls_peerdn +all
# ----------------------------------------------------------------------
# >> } exim_mainlog
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
# >> Bounce handling {
# ----------------------------------------------------------------------
message_size_limit = 500M
# ----------------------------------------------------------------------
# >> } Bounce handling
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
# >> Extra {
# ----------------------------------------------------------------------
smtp_banner
= \t$smtp_active_hostname ESMTP\n\t$tod_full
rfc1413_hosts = *
rfc1413_query_timeout = 5s
ignore_bounce_errors_after = 2d
timeout_frozen_after = 7d
keep_environment =
add_environment =
# ----------------------------------------------------------------------
# >> } Extra
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
# >> acl {
# ----------------------------------------------------------------------
# ACL we want to be checked
local_from_check = true
acl_smtp_mail =
acl_check_mail
acl_smtp_rcpt =
acl_check_rcpt
acl_smtp_connect = acl_check_host
acl_smtp_data =
acl_check_data
acl_smtp_helo =
acl_check_helo
# ----------------------------------------------------------------------
# } >> acl
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
# > } MAIN CONFIGURATION SETTINGS
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
# > ACL CONFIGURATION {
# ----------------------------------------------------------------------
begin acl
acl_check_mail:
warn
set acl_c_auth_deny = no
set acl_c_deny_msg = Checking User
logwrite
= acl_check_mail(warn): acl_c_deny_msg:$acl_c_deny_msg
accept
sender_domains =
!+local_domains:
logwrite
= acl_check_mail(accept1)
deny
sender_domains =
+local_domains
!authenticated = *
set acl_c_auth_deny = yes
set acl_c_deny_msg =
Authentication Needed for Send Mail
message
= Authentication Needed for Send Mail
logwrite
= acl_check_mail(deny):
accept
logwrite
= acl_check_mail(accept2)
acl_check_rcpt:
deny
condition =
$acl_c_auth_deny
message
= $acl_c_deny_msg
logwrite
= acl_check_rcpt(deny1)
deny
hosts = :
logwrite
= acl_check_rcpt(deny2)
deny
message =
Restricted characters in address
domains =
+local_domains
local_parts =
^[.] : ^.*[@%!/\|]
logwrite
= acl_check_rcpt(deny3)
deny
message =
Restricted characters in address
domains =
!+local_domains
local_parts =
^[./|] : ^.*[@%!] : ^.*/\\.\\./
logwrite
= acl_check_rcpt(deny4)
accept
local_parts = postmaster
domains =
+local_domains
logwrite
= acl_check_rcpt(accept1)
require
verify = sender
logwrite
= acl_check_rcpt(require1)
accept
authenticated = *
control =
submission/sender_retain
logwrite
= acl_check_rcpt(accept2)
require
message
= relay not permitted
domains
= +local_domains:+relay_to_domains
logwrite
= acl_check_rcpt(require2)
require
verify
= recipient
logwrite
= acl_check_rcpt(require3)
accept
logwrite
= acl_check_rcpt(accept3)
# Verify the host against black lists
acl_check_host:
deny
hosts
= !+relay_from_hosts
#: LOCAL_HOSTS_IGNORE_WITH_NOT
message =
Host is listed in $dnslist_domain.
dnslists = \
cbl.abuseat.org : \
virbl.dnsbl.bit.nl : \
bl.spamcop.net : \
sbl.spamhaus.org : \
xbl.spamhaus.org
logwrite
= acl_check_host(deny)
accept
logwrite
= acl_check_host(accept)
# Check that the hello does not pretend to come from our servers
acl_check_helo:
accept
hosts
= +relay_from_hosts
logwrite
= acl_check_helo(accept1)
deny
condition
= ${if or { \
{eq {${lc:$sender_helo_name} }{example.com} } \
{eq {${lc:$sender_helo_name} }{10.100.0.100} } \
{eq {${lc:$sender_helo_name} }{127.0.0.1} } \
{eq {${lc:$sender_helo_name} }{localhost} } \
} {true}{false} }
logwrite
= acl_check_helo(deny)
accept
logwrite
= acl_check_helo(accept2)
# ACL fot data
acl_check_data:
deny
condition
= ${if > {$max_received_linelength}{998} }
logwrite
= acl_check_data(deny1)
deny
malware = *
message
= This message contains a virus ($malware_name).
logwrite
= acl_check_data(deny2)
warn
spam = nobody
add_header =
X-Spam_score: $spam_score\n\
X-Spam_score_int: $spam_score_int\n\
X-Spam_bar: $spam_bar\n\
X-Spam_report: $spam_report
logwrite
= acl_check_data(warn)
deny
message
= Mensaje clasificado como SPAM
spam
= nobody:true
condition
= ${if >{$spam_score_int}{60}{1}{0} }
logwrite
= acl_check_data(deny3)
accept
logwrite
= acl_check_data(accept)
# ----------------------------------------------------------------------
# > } ACL CONFIGURATION
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
# > ROUTERS CONFIGURATION {
# ----------------------------------------------------------------------
begin routers
reject_domains:
driver
= redirect
domains
= +blocked_domains
allow_fail
data
= :fail: mail server is down - please try sending your message
again later.
uservacation:
driver
= redirect
domains
= +local_domains
allow_filter
hide_child_in_errmsg
ignore_eacces
ignore_enotdir
reply_transport =
autoreply_reply
no_verify
file_transport =
address_file
pipe_transport =
address_pipe
directory_transport = address_directory
require_files =
/var/mail/d-mail.d/${domain}/${local_part}/.autoreply.vacation.conf
file
= /var/mail/d-mail.d/${domain}/${local_part}/.autoreply.vacation.conf
senders
= !+noautoreply_senders
user
= d-mail
group
= d-mail
unseen
userautoreply:
driver
= redirect
domains
= +local_domains
allow_filter
hide_child_in_errmsg
ignore_eacces
ignore_enotdir
reply_transport =
autoreply_reply
no_verify
file_transport =
address_file
pipe_transport =
address_pipe
directory_transport = address_directory
require_files =
/var/mail/d-mail.d/${domain}/${local_part}/.autoreply.conf
file
= /var/mail/d-mail.d/${domain}/${local_part}/.autoreply.conf
#senders
= !+noautoreply_senders
user
= d-mail
group
= d-mail
userfilter:
driver
= redirect
domains
= +local_domains
allow_filter
hide_child_in_errmsg
ignore_eacces
ignore_enotdir
reply_transport =
autoreply_reply
no_verify
file_transport =
address_file
pipe_transport = address_pipe
directory_transport = address_directory
require_files =
/var/mail/d-mail.d/DETAINT_DOMAIN/DETAINT_LOCAL_PART/.filter.conf
file
= /var/mail/d-mail.d/DETAINT_DOMAIN/DETAINT_LOCAL_PART/.filter.conf
#senders
= !+noautoreply_senders
user
= d-mail
group
= d-mail
dnslookup:
driver
= dnslookup
domains
= !+local_domains
transport
= remote_smtp
ignore_target_hosts = 0.0.0.0
: 127.0.0.0/8
#: LOCAL_HOSTS_IGNORE
no_more
pgsql_all_domain_alias:
driver
= redirect
# restriction to local domains only may be a double check, as
data takes care of it already ;-)
domains
= +local_domains
local_parts = alle
data
= ${lookup pgsql{ \
SELECT CONCAT(username,'@',domain) AS sendto \
FROM public.user \
WHERE domain='${quote_pgsql:$domain}' \
AND SMTP_allowed='YES' \
}}
# treat localhost as authenticated
condition
= ${if or {{def:authenticated_id}{\
eq {$sender_host_address}{127.0.0.1}}}\
}
file_transport =
address_file
pipe_transport =
address_pipe
pgsql_alias:
driver
= redirect
# restriction to local domains only may be a double check, as
data takes care of it already ;-)
domains
= +local_domains
file_transport =
address_file
pipe_transport =
address_pipe
data
= ${if or {{def:authenticated_id}{eq
{$sender_host_address}{127.0.0.1}}}\
{\
${lookup pgsql{ \
SELECT sendto \
FROM public.alias \
WHERE (
username='${quote_pgsql:$local_part}' \
AND (domain='${quote_pgsql:$domain}' OR
domain='') )\
}\
}\
} \
{\
${lookup pgsql{ \
SELECT sendto \
FROM public.alias \
WHERE ( (
username='${quote_pgsql:$local_part}' AND
(domain='${quote_pgsql:$domain}' OR domain='') ) \
AND internal='NO' )\
}\
}\
}\
}
local_part_suffix = +*
local_part_suffix_optional
pgsql_user_condition:
driver
= accept
# restriction to local domains only may be a double check, as
the condition takes care of it already ;-)
domains
= +local_domains
caseful_local_part = true
condition
= ${if and {{\
eq {${lookup pgsql{ \
SELECT
CONCAT(username,'@',domain) AS email \
FROM public.user \
WHERE
username='${quote_pgsql:$local_part}' \
AND
domain='${quote_pgsql:$domain}' \
AND SMTP_allowed='YES' \
}\
{true}{false}}\
}\
{true}\
}\
{\
# different conditions
or {{\
# suffix contains #before# and date (yyyymmdd) is
not yet #before#yyyymmdd
and {{\
eq
{${sg{$local_part_suffix}{^#([^#]+)#[0-9]\{8\}\$}{\$1}}}{before}\
}{\
lt
{$tod_logfile}{${sg{$local_part_suffix}{^#[^#]+#([0-9]\{8\})\$}{\$1}}}\
}\
}\
}{\
# suffix contains #fromdomain# and the
domain-name of sender
and {{\
eq
{${sg{$local_part_suffix}{^#([^#]+)#.*\$}{\$1}}}{fromdomain}\
}{\
eq
{$sender_address_domain}{${sg{$local_part_suffix}{^#[^#]+#(.*)\$}{\$1}}}\
}\
}\
}{\
# suffix contains #b64from# and the base64
encoded address of sender DOES NOT WORK YET!
and {{\
eq
{${sg{$local_part_suffix}{^#([^#]+)#.*\$}{\$1}}}{b64from}\
}{\
eq
{${str2b64:$sender_address}}{${sg{$local_part_suffix}{^#[^#]+#(.*)\$}{\$1}}}\
}\
}\
}\
}\
}\
}\
}
local_part_suffix = #*
transport
= local_pgsql_delivery
pgsql_user:
driver
= accept
domains
= +local_domains
condition
= ${lookup pgsql{ \
SELECT CONCAT(username,'@',domain) AS email \
FROM public.user \
WHERE username='${quote_pgsql:$local_part}' \
AND domain='${quote_pgsql:$domain}' \
AND SMTP_allowed='YES' \
}\
{true}{false}\
}
local_part_suffix = +*
local_part_suffix_optional
transport
= local_pgsql_delivery
no_more
pgsql_catchall:
driver
= redirect
domains
= +local_domains
file_transport =
address_file
pipe_transport =
address_pipe
data
= ${lookup pgsql{\
SELECT sendto FROM public.catchall WHERE
domain='${quote_pgsql:$domain}'}\
}
system_aliases:
driver
= redirect
allow_fail
allow_defer
data
= ${lookup{$local_part}lsearch{/etc/d-mail.d/exim.d/aliases}}
file_transport =
address_file
pipe_transport =
address_pipe
localuser:
driver = accept
check_local_user
transport = local_delivery
cannot_route_message = Unknown user
# ----------------------------------------------------------------------
# > } ROUTERS CONFIGURATION
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
# > TRANSPORTS CONFIGURATION {
# ----------------------------------------------------------------------
begin transports
remote_smtp:
driver
= smtp
delivery_date_add
dkim_domain =
$sender_address_domain
dkim_selector = thisis
dkim_private_key =
/etc/d-mail.d/exim.d/dkim.key
dkim_canon
= relaxed
# Hide sender address in Received header
headers_remove =
X-SA-Do-Not-Run: \
X-SA-Exim-Scanned: \
X-SA-Exim-Mail-From: \
X-SA-Exim-Rcpt-To: \
X-SA-Exim-Connect-IP: \
X-Mailer: \
X-MS-Has-Attach: \
X-MS-TNEF-Correlator: \
x-originating-ip: \
x-exclaimer-md-config: \
User-Agent
headers_remove =
X-Spam-Report:X-Spam-Bar
autoreply_reply:
driver = autoreply
address_directory:
driver = appendfile
maildir_format
local_delivery:
driver = appendfile
#original_domain
directory =
/var/mail/d-mail.d/${local_part}
maildir_format
delivery_date_add
envelope_to_add
return_path_add
group = d-mail
mode = 0660
local_pgsql_delivery:
driver = appendfile
directory =
/var/mail/d-mail.d/DETAINT_DOMAIN/DETAINT_LOCAL_PART
maildir_format
delivery_date_add
envelope_to_add
return_path_add
user = d-mail
group = d-mail
mode = 0660
address_pipe:
driver = pipe
return_output
address_file:
driver = appendfile
delivery_date_add
envelope_to_add
return_path_add
address_reply:
driver = autoreply
# ----------------------------------------------------------------------
# > } TRANSPORTS CONFIGURATION
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
# > RETRY CONFIGURATION {
# ----------------------------------------------------------------------
begin retry
* * F,15m,5m; F,2h,15m; G,16h,1h,1.5; F,4d,6h
# ----------------------------------------------------------------------
# > } RETRY CONFIGURATION
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
# > REWRITE CONFIGURATION {
# There are no rewriting specifications in this default
configuration file.
# ----------------------------------------------------------------------
# REWRITE CONFIGURATION
begin rewrite
# ----------------------------------------------------------------------
# > } REWRITE CONFIGURATION
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
# > AUTHENTICATION CONFIGURATION {
# ----------------------------------------------------------------------
begin authenticators
dovecot_auth:
driver = dovecot
public_name = CRAM-MD5
server_socket = /var/run/dovecot/auth-client
server_set_id = $auth1
# ----------------------------------------------------------------------
# > } AUTHENTICATION CONFIGURATION
# ----------------------------------------------------------------------
#
# } exim.conf
#
I am able to receive emails but cannot send emails for some reason. Also
I check and make sure that ports 25, 465 and 587 are open. I am not sure
what just happened, I did not change anything. However cannot find what
is wrong in my configuration.
Any help in the right direction would be greatly appreciated.
--
## subscription configuration (requires account):
##
https://lists.exim.org/mailman3/postorius/lists/exim-users.lists.exim.org/
## unsubscribe (doesn't require an account):
## exim-users-unsubscribe@???
## Exim details at
http://www.exim.org/
## Please use the Wiki with this list -
http://wiki.exim.org/