- primary_hostname = smtp.dom.ain
- hide mysql_servers = localhost/exim/exim/45hrVjdgZkJGY
- domainlist local_domains = ${lookup mysql{SELECT `domain` \
- FROM `domain` WHERE \
- `domain`='${quote_mysql:$domain}' AND \
- `active`='1'}}
- domainlist relay_to_domains = ${lookup mysql{SELECT `domain` \
- FROM `domain` WHERE \
- `domain`='${quote_mysql:$domain}' AND \
- `active`='1'}}
- tls_certificate = /etc/exim/tls/fullchain.pem
- tls_privatekey = /etc/exim/tls/privkey.pem
- tls_on_connect_ports = 465
- tls_advertise_hosts = *
- hostlist relay_from_hosts = localhost:127.0.0.0/8
- acl_smtp_rcpt = acl_check_rcpt
- acl_smtp_data = acl_check_data
- acl_not_smtp = acl_not_smtp
- qualify_domain = dom.ain
- qualify_recipient = dom.ain
- allow_domain_literals = false
- exim_user = exim
- exim_group = exim
- never_users = root
- rfc1413_query_timeout = 0s
- sender_unqualified_hosts = +relay_from_hosts
- recipient_unqualified_hosts = +relay_from_hosts
- ignore_bounce_errors_after = 45m
- timeout_frozen_after = 15d
- helo_accept_junk_hosts = 192.168.1.0/24
- auto_thaw = 1h
- smtp_banner = "$primary_hostname, ESMTP EXIM $version_number"
- smtp_accept_max = 50
- smtp_accept_max_per_connection = 25
- smtp_connect_backlog = 30
- smtp_accept_max_per_host = 20
- split_spool_directory = true
- remote_max_parallel = 15
- return_size_limit = 70k
- message_size_limit = 64M
- helo_allow_chars = _
- smtp_enforce_sync = true
- log_selector = \
- +all_parents \
- +connection_reject \
- +incoming_interface \
- +lost_incoming_connection \
- +received_sender \
- +received_recipients \
- +smtp_confirmation \
- +smtp_syntax_error \
- +smtp_protocol_error \
- +queue_run
- syslog_timestamp = no
- begin acl
- acl_not_smtp:
- deny message = Sender rate overlimit - $sender_rate / $sender_rate_period
- ratelimit = 30 / 1h / strict
- accept
- acl_check_rcpt:
- accept hosts = :
- deny message = "incorrect symbol in address"
- domains = +local_domains
- local_parts = ^[.] : ^.*[@%!/|]
- deny message = "incorrect symbol in address"
- domains = !+local_domains
- local_parts = ^[./|] : ^.*[@%!] : ^.*/\\.\\./
- accept local_parts = postmaster
- domains = +local_domains
- deny message = "HELO/EHLO required by SMTP RFC"
- condition = ${if eq{$sender_helo_name}{}{yes}{no}}
- accept authenticated = *
- deny !authenticated = *
- sender_domains = +local_domains : +relay_to_domains
- message = "Warning! Authentication required!"
- deny message = "Your IP in HELO - access denied!"
- hosts = * : !+relay_from_hosts : !81-196.point.local
- condition = ${if eq{$sender_helo_name}\
- {$sender_host_address}{true}{false}}
- deny condition = ${if eq{$sender_helo_name}\
- {$interface_address}{yes}{no}}
- hosts = !127.0.0.1 : !localhost : *
- message = "My IP in your HELO! Access denied!"
- deny condition = ${if match{$sender_helo_name}\
- {\N^\d+$\N}{yes}{no}}
- hosts = !127.0.0.1 : !localhost : *
- message = "Incorrect HELO string"
- warn
- set acl_m0 = 30s
- warn
- hosts = +relay_from_hosts:4.3.2.1/32:192.168.1.0/24 #disable waits for 'friendly' hosts
- set acl_m0 = 0s
- warn
- logwrite = Delay $acl_m0 for $sender_host_name \
- [$sender_host_address] with HELO=$sender_helo_name. Mail \
- from $sender_address to $local_part@$domain.
- delay = $acl_m0
- accept domains = +local_domains
- endpass
- message = "No such user"
- verify = recipient
- accept domains = +relay_to_domains
- endpass
- message = "i don't know how to relay to this address"
- verify = recipient
- deny message = "you in blacklist - $dnslist_domain \n $dnslist_text"
- dnslists = opm.blitzed.org : \
- cbl.abuseat.org : \
- bl.csma.biz
- accept hosts = +relay_from_hosts
- deny message = "Homo hominus lupus est"
- acl_check_data:
- accept
- begin routers
- dnslookup:
- driver = dnslookup
- domains = ! +local_domains
- transport = remote_smtp
- ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
- no_more
- system_aliases:
- driver = redirect
- allow_fail
- allow_defer
- data = ${lookup mysql{SELECT `goto` FROM `alias` WHERE \
- `address`='${quote_mysql:$local_part@$domain}' OR \
- `address`='${quote_mysql:@$domain}'}}
- dovecot_user:
- driver = accept
- condition = ${lookup mysql{SELECT `goto` FROM \
- `alias` WHERE \
- `address`='${quote_mysql:$local_part@$domain}' OR \
- `address`='${quote_mysql:@$domain}'}{yes}{no}}
- transport = dovecot_delivery
- begin transports
- remote_smtp:
- driver = smtp
- dkim_domain = ${lc:${domain:$h_from:}}
- dkim_selector = x
- dkim_private_key = /etc/exim/dkim/private.key
- dkim_canon = relaxed
- dovecot_delivery:
- driver = pipe
- command = /usr/libexec/dovecot/deliver -d $local_part@$domain
- message_prefix =
- message_suffix =
- delivery_date_add
- envelope_to_add
- return_path_add
- log_output
- user = exim
- address_pipe:
- driver = pipe
- return_output
- address_reply:
- driver = autoreply
- begin retry
- * * F,2h,15m; G,16h,1h,1.5; F,4d,6h
- begin rewrite
- begin authenticators
- auth_plain:
- driver = plaintext
- public_name = LOGIN
- server_prompts = Username:: : Password::
- server_condition = "${if crypteq{$2}{${lookup mysql{SELECT `password` FROM `mailbox` WHERE `username` = '${quote_mysql:$1}'}}}{yes}{no}}"
- server_set_id = $1
- auth_login:
- driver = plaintext
- public_name = PLAIN
- server_condition = "${if crypteq{$3}{${lookup mysql{SELECT `password` FROM `mailbox` WHERE `username` = '${quote_mysql:$2}'}}}{yes}{no}}"
- server_prompts = :
- server_set_id = $2