Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

» FAQ по Exim MTA #2

Автор: glesando
Дата сообщения: 02.07.2011 11:37

Я хочу сделать следущее: чтобы юзер отправляя письмо, мог это сделать только через 465 порт, соответственно используя TLS. Не знаю, на сколько это реально...

Может подскажете чего-то?
Автор: Alukardd
Дата сообщения: 02.07.2011 12:32
glesando
Я чего-то совсем не догоняю... Мы же вам это объяснили пару недель назад. Что не срослось-то???
Запрещаете просто незащищенную отправку со своих доменов и все.
Автор: glesando
Дата сообщения: 02.07.2011 13:25

Прошу прощения. Я еще раз протестил - вроде все работает.
Извините, пожалуйста...
Автор: fedor00
Дата сообщения: 06.07.2011 09:30
Подскажите почему то не работают ограничения
привожу конфиг
###################################################
#ОГРАНИЧЕНИЕ ОЧЕРЕДИ
accept
hosts = net-lsearch;/etc/exim4/whitelist_ratelimit
logwrite = "Sender rate overlimit - $sender_host_address , but whitelisted..."
warn
#ограничение 30 писем за 1 минуту
ratelimit = 30 / 1m / leaky / $sender_host_address
log_message = Sender rate $sender_rate / $sender_rate_period / $sender_host_address
deny
message = Sender rate overlimit - $sender_address / $sender_host_address
ratelimit = 30 / 1m / leaky / $sender_host_address


# ограничение 100 писем за 30 мин
accept
hosts = net-lsearch;/etc/exim4/whitelist_ratelimit
logwrite = "Sender rate overlimit - $sender_host_address , but whitelisted..."
warn
ratelimit = 100 / 30m / leaky / $sender_host_address
log_message = Sender rate $sender_rate / $sender_rate_period / $sender_host_address
deny
message = Sender rate overlimit - $sender_address / $sender_host_address
ratelimit = 100 / 30m / leaky / $sender_host_address


#ограничение 1000 писем за 24 часа
accept
hosts = net-lsearch;/etc/exim4/whitelist_ratelimit
logwrite = "Sender rate overlimit - $sender_host_address , but whitelisted..."
warn
ratelimit = 1000 / 24h / leaky / $sender_host_address
log_message = Sender rate $sender_rate / $sender_rate_period / $sender_host_address
deny
message = Sender rate overlimit - $sender_address / $sender_host_address
ratelimit = 1000 / 24h / leaky / $sender_host_address

####################################################
Автор: vlary
Дата сообщения: 06.07.2011 17:10
fedor00 exim -bh айпи_надоедливого_хоста тебе в помощь. Запускай имитацию сессии и смотри в дебаге по акцесс-листам, почему твои ограничения не срабатывают.
Автор: DrakonHaSh
Дата сообщения: 07.07.2011 10:48
на почтовом серваке используется связка dovecot+exim
в лог exim не попадают данные по исходящим письмам, которые посылают пользователи. в лог exim попадает информация только по
* входящим
* исходящим, посылаемым локально с сервака

почему такое происходит ? [я так подозреваю что ее отправляет dovecot и до exim она просто не доходит]
можно ли это исправить ? [задача стоит логгировать и сохранять все входящие и исходящие]

Автор: vlary
Дата сообщения: 07.07.2011 11:49
DrakonHaSh Dovecot - это IMAP и POP3 сервер, он не имеет функционала SMTP сервера. Тем более если у клиента Exim прямо прописан в качестве сервера исходящей почты, то до Dovecot и дело не должно доходить (разве что в случае, когда через него идет SMTP авторизация).
Так что смотри свой конфиг, наверняка там косяк. У меня, по крайней мере, лог исходящей почты пишет нормально.

Код: 2011-07-07 12:26:10 1QejuU-0007wj-Ay <= myname@mycompany.ru H=vista.mycompany.ru [10.1.2.40] P=esmtp S=582 id=4E156FA1.90205@mycompany.ru
2011-07-07 12:26:10 1QejuU-0007wj-Ay => myname@mail.ru R=disclaimer T=disclaimer_smtp H=mxs.mail.ru [94.100.176.20]
Автор: DrakonHaSh
Дата сообщения: 07.07.2011 13:22

Цитата:
Dovecot - это IMAP и POP3 сервер, он не имеет функционала SMTP сервера.

ну да, dovecot же не имеет своего MTA, значит дело, по идее, не в нем.

посмотрел на серваке - smtp порт слушает процесс exim-а

посмотрел логи exim/mainlog повнимательнее - иногда (очень редко) исходящие все таки логгируются. перед этим в maillog присутствует запись:
dovecot: pop3-login: Login: user=<user@bla>
dovecot: pop3(user@bla): Disconnected: Logged out
=>
значит, похоже, через dovecot идет авторизация для smtp

[ я этот сервак не настраивал, он мне по наследству достался от бывшего админа. А я в силу своего "чайнизма" стараюсь с ним ничего не делать за исключением легких движений напильником в которых я на 100% уверен что они не сломают ничего в работе сервака. я в *nix умею только команды запускать, логи смотреть и конфиги править. переустановка или установка exim и/или dovecot для меня страшный кошмар ]


Цитата:
Тем более если у клиента Exim прямо прописан в качестве сервера исходящей почты

это как понимать ?
по логам видно что клиенты коннектятся к серваку через pop3, никаких smtp в логах соединений не видно (может exim просто не настроен на логгирование этого события. не подскажите как включить логгирование к exim по smtp. может какой-то расширенный режим логов есть)


я пока только одно объяснение, кроме какого-то очень странного глюка в настройках,
могу придумать - хитропопые пользователи прописывают в качестве smtp какой-то другой сервак и отправляют почту через него. хотя это прямо какой-то детектив получается ))
Автор: vlary
Дата сообщения: 07.07.2011 13:53
DrakonHaSh
Цитата:
могу придумать - хитропопые пользователи прописывают в качестве smtp какой-то другой сервак и отправляют почту через него
Ну так пропиши его у себя в клиенте, отправь тестовую почту и посмотри логи. В чем проблема?

Автор: LorDHawK
Дата сообщения: 30.07.2011 00:40
Люди может кто-то будет так добр и поделится уже рабочим отлаженным конфигом для Exim ?


на сервер с CenOS 5 установлена связка Exim 4.76+dovecot+DirectAdmin
созданы виртуал хосты, у них заведены свои e-mail аккаунты с которых владельцы могут отправлять почту наружу скажем через The Bat используя сервер как релей и свои имя/пароль, так и получать почту которая приходит на их e-mail и ложится на сервере - тут как бы понятно, стандартная схема

Но вся фигня в том что этот релей и Спаммеры тоже бомбят, шлют на него тонны левых писем, часть из которых блочится на отправку и просто ложится в очередь, в итоге это очередь разрастается как снежный ком, exim в тщетных попытках повторить отправку запускает кучу процессов что в итоге нагружает сам сервер. Можно конечно каждые 10 минут по cron обнулять почтовый Спул но от спама и загрузки сервера это не избавит. Нужен настроенный конфиг который бы отсеивал эти Спамерские запросы еще на моменте коннекта и вообще не помещал левые письма в очередь, либо такой, который позволяет соединяться с релеем только авторизированным пользователям по их E-mail аккаунтам (e-mail отправителя не должен обязательно соответствовать тому что на сервера, проверка именно по авторизации соединения с самим релем, если логин/пароль не верны - на кислород)

Есть у кого-то такой конфиг ?


Автор: Alukardd
Дата сообщения: 30.07.2011 01:56
LorDHawK
Что-то либо я вас не понял, либо у вас каша в голове о том что такое релей...
В любом случае [more=вот]exim_path = /usr/sbin/exim4
exim_user = Debian-exim
exim_group = mail
.ifndef CONFDIR
CONFDIR = /etc/exim4
.endif
CHECK_MAIL_HELO_ISSUED = true
CHECK_RCPT_LOCAL_LOCALPARTS = ^[.] : ^.*[@%!/|`#&?]
CHECK_RCPT_REMOTE_LOCALPARTS = ^[./|] : ^.*[@%!`#&?] : ^.*/\\.\\./
CHECK_RCPT_POSTMASTER = true
CHECK_RCPT_VERIFY_SENDER = true
CHECK_RCPT_REVERSE_DNS = true
CHECK_RCPT_IP_DNSBLS = dnsbl.njabl.org : dnsbl.net.au : dul.ru : bl.spamcop.net
CHECK_DATA_VERIFY_HEADER_SENDER = true
CHECK_RCPT_SPF = true
MAIN_TLS_ENABLE = true
GREYLIST_TEST=SELECT concat("id=",id," ts=",(unix_timestamp()-block_expires)) \
from Greylist \
where relay_ip='${quote_mysql:$sender_host_address}' and \
sender='${quote_mysql:$sender_address}' and \
recipient='${quote_mysql:$local_part}@${quote_mysql:$domain}' limit 1
GREYLIST_ADD=INSERT into Greylist (relay_ip,sender,recipient,\
block_expires,record_expires,create_time,block_count,ehlo) \
values \
('${quote_mysql:$sender_host_address}',\
'${quote_mysql:$sender_address}',\
'${quote_mysql:$local_part}@${quote_mysql:$domain}',\
unix_timestamp()+5,unix_timestamp()+60*60*24,unix_timestamp(),1,\
'${quote_mysql:$sender_helo_name}')
GREYLIST_UPD1=UPDATE Greylist set pass_count=pass_count+1,\
record_expires=unix_timestamp()+60*60*24 where id=$acl_m2
GREYLIST_UPD2=UPDATE Greylist set block_count=block_count+1 where id=$acl_m2
daemon_smtp_ports = 25 : 465 : 587
tls_on_connect_ports = 465
UPEX4CmacrosUPEX4C = 1
domainlist local_domains = ${lookup mysql{SELECT domain FROM domains WHERE domain='${domain}' AND (type='LOCAL' OR type='VIRTUAL')}}
domainlist relay_to_domains = ${lookup mysql{SELECT domain FROM domains WHERE domain='${domain}' AND type='RELAY'}}
hostlist relay_from_hosts = 127.0.0.1/8
hostlist auth_relay_hosts = *
MAIN_QUALIFY_DOMAIN = company.org
.ifndef MAIN_PRIMARY_HOSTNAME_AS_QUALIFY_DOMAIN
.ifndef MAIN_QUALIFY_DOMAIN
qualify_domain = ETC_MAILNAME
.else
qualify_domain = MAIN_QUALIFY_DOMAIN
.endif
.endif
.ifdef MAIN_LOCAL_INTERFACES
local_interfaces = MAIN_LOCAL_INTERFACES
.endif
.ifndef LOCAL_DELIVERY
LOCAL_DELIVERY=maildir_home
.endif
gecos_pattern = ^([^,:]*)
gecos_name = $1
.ifndef CHECK_RCPT_LOCAL_LOCALPARTS
CHECK_RCPT_LOCAL_LOCALPARTS = ^[.] : ^.*[@%!/|`#&?]
.endif
.ifndef CHECK_RCPT_REMOTE_LOCALPARTS
CHECK_RCPT_REMOTE_LOCALPARTS = ^[./|] : ^.*[@%!`#&?] : ^.*/\\.\\./
.endif
.ifndef MAIN_LOG_SELECTOR
MAIN_LOG_SELECTOR = +tls_peerdn
.endif
.ifndef MAIN_ACL_CHECK_MAIL
MAIN_ACL_CHECK_MAIL = acl_check_mail
.endif
acl_smtp_mail = MAIN_ACL_CHECK_MAIL
.ifndef MAIN_ACL_CHECK_RCPT
MAIN_ACL_CHECK_RCPT = acl_check_rcpt
.endif
acl_smtp_rcpt = MAIN_ACL_CHECK_RCPT
.ifndef MAIN_ACL_CHECK_DATA
MAIN_ACL_CHECK_DATA = acl_check_data
.endif
acl_smtp_data = MAIN_ACL_CHECK_DATA
.ifdef MESSAGE_SIZE_LIMIT
message_size_limit = MESSAGE_SIZE_LIMIT
.endif
av_scanner = clamd:/var/run/clamav/clamd.ctl
spamd_address = 127.0.0.1 783
.ifdef MAIN_ALLOW_DOMAIN_LITERALS
allow_domain_literals
.endif
.ifndef DC_minimaldns
.ifndef MAIN_HOST_LOOKUP
MAIN_HOST_LOOKUP = *
.endif
host_lookup = MAIN_HOST_LOOKUP
.endif
MAIN_HARDCODE_PRIMARY_HOSTNAME = mail.company.org
.ifdef MAIN_HARDCODE_PRIMARY_HOSTNAME
primary_hostname = MAIN_HARDCODE_PRIMARY_HOSTNAME
.endif
rfc1413_hosts = *
rfc1413_query_timeout = 1s
.ifdef MAIN_SMTP_ACCEPT_MAX_NOMAIL_HOSTS
smtp_accept_max_nonmail_hosts = MAIN_SMTP_ACCEPT_MAX_NOMAIL_HOSTS
.endif
.ifndef MAIN_FORCE_SENDER
local_from_check = false
local_sender_retain = true
untrusted_set_sender = *
.endif
.ifndef MAIN_IGNORE_BOUNCE_ERRORS_AFTER
MAIN_IGNORE_BOUNCE_ERRORS_AFTER = 2d
.endif
ignore_bounce_errors_after = MAIN_IGNORE_BOUNCE_ERRORS_AFTER
.ifndef MAIN_TIMEOUT_FROZEN_AFTER
MAIN_TIMEOUT_FROZEN_AFTER = 1d
.endif
timeout_frozen_after = MAIN_TIMEOUT_FROZEN_AFTER
.ifndef MAIN_FREEZE_TELL
MAIN_FREEZE_TELL = postmaster
.endif
freeze_tell = MAIN_FREEZE_TELL
.ifndef SPOOLDIR
SPOOLDIR = /var/spool/exim4
.endif
spool_directory = SPOOLDIR
.ifndef MAIN_TRUSTED_USERS
MAIN_TRUSTED_USERS = uucp
.endif
trusted_users = MAIN_TRUSTED_USERS
.ifdef MAIN_TRUSTED_GROUPS
trusted_groups = MAIN_TRUSTED_GROUPS
.endif
smtp_banner = $smtp_active_hostname handmade MTA $tod_full
auth_advertise_hosts = ${if eq{$tls_cipher}{}{}{*}}
.ifdef MAIN_TLS_ENABLE
.ifndef MAIN_TLS_ADVERTISE_HOSTS
MAIN_TLS_ADVERTISE_HOSTS = ${if eq {$interface_port}{587}{*}{}}
.endif
tls_advertise_hosts = MAIN_TLS_ADVERTISE_HOSTS
.ifdef MAIN_TLS_CERTKEY
tls_certificate = MAIN_TLS_CERTKEY
.else
.ifndef MAIN_TLS_CERTIFICATE
MAIN_TLS_CERTIFICATE = CONFDIR/exim.crt
.endif
tls_certificate = MAIN_TLS_CERTIFICATE
.ifndef MAIN_TLS_PRIVATEKEY
MAIN_TLS_PRIVATEKEY = CONFDIR/exim.key
.endif
tls_privatekey = MAIN_TLS_PRIVATEKEY
.endif
.ifndef MAIN_TLS_VERIFY_CERTIFICATES
MAIN_TLS_VERIFY_CERTIFICATES = ${if exists{/etc/ssl/certs/ca-certificates.crt}\
{/etc/ssl/certs/ca-certificates.crt}\
                 {/dev/null}}
.endif
tls_verify_certificates = MAIN_TLS_VERIFY_CERTIFICATES
.ifdef MAIN_TLS_VERIFY_HOSTS
tls_verify_hosts = MAIN_TLS_VERIFY_HOSTS
.endif
.ifndef MAIN_TLS_TRY_VERIFY_HOSTS
MAIN_TLS_TRY_VERIFY_HOSTS =
.endif
tls_try_verify_hosts = MAIN_TLS_TRY_VERIFY_HOSTS
.endif
MAIN_LOG_SELECTOR == MAIN_LOG_SELECTOR +all -subject -arguments
.ifdef MAIN_LOG_SELECTOR
log_selector = MAIN_LOG_SELECTOR
.endif
hide mysql_servers = localhost/exim/sqlmail/MyPaSsWoRd
begin acl
spf_rcpt_acl:
# Check envelope sender
warn set acl_m8 = $sender_address
deny !acl = spf_check
warn message = Received-SPF: $acl_m8 ($acl_m7)
accept
spf_from_acl:
# Check header From:
warn set acl_m8 = ${address:$h_from:}
deny !acl = spf_check
warn message = Received-SPF: $acl_m8 ($acl_m7)
accept
spf_check:
warn set acl_m9 = ${readsocket{/var/run/spfd/spfd.sock}\
{ip=$sender_host_address\n\
helo=${if def:sender_helo_name\
{$sender_helo_name}{NOHELO}}\
\nsender=$acl_m8\n\n}{20s}{\n}{socket failure}}
# Defer on socket error
defer condition = ${if eq{$acl_m9}{socket failure}{yes}{no}}
message = Cannot connect to spfd
# Prepare answer and get results
warn set acl_m9 = ${sg{$acl_m9}{\N=(.*)\n\N}{=\"\$1\" }}
set acl_m8 = ${extract{result}{$acl_m9}{$value}{unknown}}
set acl_m7 = ${extract{header_comment}{$acl_m9}{$value}{}}
# Check for fail
deny condition = ${if eq{$acl_m8}{fail}{yes}{no}}
message = ${extract{smtp_comment}{$acl_m9}{$value}{}}
log_message = Not authorized by SPF

# Check for neutral
accept
acl_local_deny_exceptions:
accept
hosts = ${if exists{CONFDIR/host_local_deny_exceptions}\
{CONFDIR/host_local_deny_exceptions}\
{}}
accept
senders = ${if exists{CONFDIR/sender_local_deny_exceptions}\
{CONFDIR/sender_local_deny_exceptions}\
{}}
accept
hosts = ${if exists{CONFDIR/local_host_whitelist}\
{CONFDIR/local_host_whitelist}\
{}}
accept
senders = ${if exists{CONFDIR/local_sender_whitelist}\
{CONFDIR/local_sender_whitelist}\
{}}
.ifdef LOCAL_DENY_EXCEPTIONS_LOCAL_ACL_FILE
.include LOCAL_DENY_EXCEPTIONS_LOCAL_ACL_FILE
.endif

.ifdef WHITELIST_LOCAL_DENY_LOCAL_ACL_FILE
.include WHITELIST_LOCAL_DENY_LOCAL_ACL_FILE
.endif
acl_check_mail:
.ifdef CHECK_MAIL_HELO_ISSUED
deny
message = no HELO/EHLO given before MAIL command
condition = ${if def:sender_helo_name {no}{yes}}
.endif
deny
message = $sender_host_address is not allowed to send mail from $sender_address_domain
!acl = spf_rcpt_acl
hosts = !+relay_from_hosts

accept
acl_check_rcpt:
accept
hosts = :
    deny
    message = Authentication required before MAIL command
        !authenticated = *
        condition = ${if eq {$interface_port}{587}{true}}
.ifdef CHECK_RCPT_LOCAL_LOCALPARTS
deny
domains = +local_domains
local_parts = CHECK_RCPT_LOCAL_LOCALPARTS
message = restricted characters in address
.endif


.ifdef CHECK_RCPT_REMOTE_LOCALPARTS
deny
domains = !+local_domains
local_parts = CHECK_RCPT_REMOTE_LOCALPARTS
message = restricted characters in address
.endif
accept
.ifndef CHECK_RCPT_POSTMASTER
local_parts = postmaster
.else
local_parts = CHECK_RCPT_POSTMASTER
.endif
domains = +local_domains : +relay_to_domains
.ifdef CHECK_RCPT_VERIFY_SENDER
deny
message = Sender verification failed
!acl = acl_local_deny_exceptions
!verify = sender
.endif
deny
!acl = acl_local_deny_exceptions
senders = ${if exists{CONFDIR/local_sender_callout}\
{CONFDIR/local_sender_callout}\
{}}
!verify = sender/callout
accept
hosts = +relay_from_hosts
control = submission/sender_retain
    accept
        authenticated = *
        control = submission/sender_retain
        control = dkim_disable_verify
require
message = relay not permitted
domains = +local_domains : +relay_to_domains
require
verify = recipient
deny
!acl = acl_local_deny_exceptions
recipients = ${if exists{CONFDIR/local_rcpt_callout}\
{CONFDIR/local_rcpt_callout}\
{}}
!verify = recipient/callout
deny
message = sender envelope address $sender_address is locally blacklisted here. If you think this is wrong, get in touch with postmaster
!acl = acl_local_deny_exceptions
senders = ${if exists{CONFDIR/local_sender_blacklist}\
{CONFDIR/local_sender_blacklist}\
{}}
deny
message = sender IP address $sender_host_address is locally blacklisted here. If you think this is wrong, get in touch with postmaster
!acl = acl_local_deny_exceptions
hosts = ${if exists{CONFDIR/local_host_blacklist}\
{CONFDIR/local_host_blacklist}\
{}}
.ifdef CHECK_RCPT_REVERSE_DNS
deny
message = X-Host-Lookup-Failed: Reverse DNS lookup failed for $sender_host_address (${if eq{$host_lookup_failed}{1}{failed}{deferred}})
condition = ${if and{{def:sender_host_address}{!def:sender_host_name}}\
{yes}{no}}
.endif

deny
senders = :
hosts = ! +relay_from_hosts
!acl = spf_from_acl
message = Your sender is not permitted (read spf.pobox.com)
.ifdef CHECK_RCPT_SPF
deny
message = [SPF] $sender_host_address is not allowed to send mail from ${if def:sender_address_domain {$sender_address_domain}{$sender_helo_name}}. \
Please see http://www.openspf.org/Why?scope=${if def:sender_address_domain {mfrom}{helo}};identity=${if def:sender_address_domain {$sender_address}{$sender_helo_name}};ip=$sender_host_address
log_message = SPF check failed.
!acl = acl_local_deny_exceptions
condition = ${run{/usr/bin/spfquery --ip \"$sender_host_address\" --mail-from \"$sender_address\" --helo \"$sender_helo_name\"}\
{no}{${if eq {$runrc}{1}{yes}{no}}}}
# моя попытка изменить условие
#condition = ${run{/usr/bin/spfquery --ip ${sender_host_address} --mail-from ${sender_address} --helo ${sender_helo_name}}\
# {no}{${if eq {$runrc}{1}{yes}{no}}}}
defer
message = Temporary DNS error while checking SPF record. Try again later.
condition = ${if eq {$runrc}{5}{yes}{no}}
warn
message = Received-SPF: ${if eq {$runrc}{0}{pass}{${if eq {$runrc}{2}{softfail}\
{${if eq {$runrc}{3}{neutral}{${if eq {$runrc}{4}{unknown}{${if eq {$runrc}{6}{none}{error}}}}}}}}}}
condition = ${if <={$runrc}{6}{yes}{no}}
warn
log_message = Unexpected error in SPF check.
condition = ${if >{$runrc}{6}{yes}{no}}
warn
message = X-SPF-Guess: ${run{/usr/bin/spfquery --ip \"$sender_host_address\" --mail-from \"$sender_address\" \ --helo \"$sender_helo_name\" --guess true}\
{pass}{${if eq {$runrc}{2}{softfail}{${if eq {$runrc}{3}{neutral}{${if eq {$runrc}{4}{unknown}\
{${if eq {$runrc}{6}{none}{error}}}}}}}}}}
condition = ${if <={$runrc}{6}{yes}{no}}
.endif
.ifdef CHECK_RCPT_IP_DNSBLS
deny
message = X-Warning: $sender_host_address is listed at $dnslist_domain ($dnslist_value: $dnslist_text)
log_message = $sender_host_address is listed at $dnslist_domain ($dnslist_value: $dnslist_text)
dnslists = CHECK_RCPT_IP_DNSBLS
.endif
.ifdef CHECK_RCPT_DOMAIN_DNSBLS
warn
message = X-Warning: $sender_address_domain is listed at $dnslist_domain ($dnslist_value: $dnslist_text)
log_message = $sender_address_domain is listed at $dnslist_domain ($dnslist_value: $dnslist_text)
!senders = ${if exists{CONFDIR/local_domain_dnsbl_whitelist}\
{CONFDIR/local_domain_dnsbl_whitelist}\
{}}
dnslists = CHECK_RCPT_DOMAIN_DNSBLS
.endif
.ifdef CHECK_RCPT_LOCAL_ACL_FILE
.include CHECK_RCPT_LOCAL_ACL_FILE
.endif



accept
domains = +relay_to_domains
endpass
verify = recipient
accept
acl_check_spamsenders:
accept
    dkim_status = pass
    log_message = Pass throw by DKIM

warn set acl_m1 = ${lookup mysql{GREYLIST_TEST}{$value}{id=-1 ts=0}}
set acl_m2 = ${extract{id}{$acl_m1}{$value}{unknown}}
set acl_m3 = ${extract{ts}{$acl_m1}{$value}{unknown}}
defer hosts = ! +relay_from_hosts
condition = ${if < {$acl_m2}{0}{yes}{no}}
set acl_m4 = ${lookup mysql{GREYLIST_ADD}{$value}{0}}
defer hosts = ! +relay_from_hosts
condition = ${if > {$acl_m2}{0}{yes}{no}}
condition = ${if < {$acl_m3}{0}{yes}{no}}
set acl_m4 = ${lookup mysql{GREYLIST_UPD2}{$value}{0}}
warn hosts = ! +relay_from_hosts
set acl_m4 = ${lookup mysql{GREYLIST_UPD1}{$value}{0}}
accept
acl_check_data:
deny
senders = :
!acl = spf_from_acl
deny
message = contains $found_extension file (blacklisted).
demime = exe : com : lnk : pif : prf
.ifdef CHECK_DATA_VERIFY_HEADER_SYNTAX
deny
message = Message headers fail syntax check
!acl = acl_local_deny_exceptions
!verify = header_syntax
.endif
.ifdef CHECK_DATA_VERIFY_HEADER_SENDER
deny
message = No verifiable sender address in message headers
!acl = acl_local_deny_exceptions
!verify = header_sender
.endif
deny
malware = *
message = This message was detected as possible malware ($malware_name).
warn
spam = Debian-exim:true
message = 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

#warn
# message = X-Spam_Flag: Yes
# condition = ${if >{$spam_score_int}{50}{yes}{no}}
.ifdef CHECK_DATA_LOCAL_ACL_FILE
.include CHECK_DATA_LOCAL_ACL_FILE
.endif
accept
begin routers
.ifdef MAIN_ALLOW_DOMAIN_LITERALS
domain_literal:
debug_print = "R: domain_literal for $local_part@$domain"
driver = ipliteral
domains = ! +local_domains
transport = remote_smtp
.endif
hubbed_hosts:
debug_print = "R: hubbed_hosts for $domain"
driver = manualroute
domains = "${if exists{CONFDIR/hubbed_hosts}\
{partial-lsearch;CONFDIR/hubbed_hosts}\
fail}"
same_domain_copy_routing = yes
route_data = ${lookup{$domain}partial-lsearch{CONFDIR/hubbed_hosts}}
transport = remote_smtp
.ifdef DCconfig_internet
dnslookup_relay_to_domains:
debug_print = "R: dnslookup_relay_to_domains for $local_part@$domain"
driver = dnslookup
domains = ! +local_domains : +relay_to_domains
transport = remote_smtp
same_domain_copy_routing = yes
no_more
dnslookup:
debug_print = "R: dnslookup for $local_part@$domain"
driver = dnslookup
domains = ! +local_domains
transport = remote_smtp
same_domain_copy_routing = yes
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8 : 192.168.0.0/16 :\
172.16.0.0/12 : 10.0.0.0/8 : 169.254.0.0/16 :\
            255.255.255.255
no_more
.endif
.ifdef DCconfig_local
nonlocal:
debug_print = "R: nonlocal for $local_part@$domain"
driver = redirect
domains = ! +local_domains
allow_fail
data = :fail: Mailing to remote domains not supported
no_more
.endif
.ifdef DCconfig_smarthost DCconfig_satellite
smarthost:
debug_print = "R: smarthost for $local_part@$domain"
driver = manualroute
domains = ! +local_domains
transport = remote_smtp_smarthost
route_list = * DCsmarthost byname
host_find_failed = deauth_advertise_hosts = ${if eq{$tls_cipher}{}{}{*}}fer
same_domain_copy_routing = yes
no_more
.endif
COND_LOCAL_SUBMITTER = "\
${if match_ip{$sender_host_address}{:@[]}\
{1}{0}\
        }"
real_local:
debug_print = "R: real_local for $local_part@$domain"
driver = accept
domains = +local_domains
condition = COND_LOCAL_SUBMITTER
local_part_prefix = real-
check_local_user
transport = LOCAL_DELIVERY
system_aliases:
debug_print = "R: system_aliases for $local_part@$domain"
driver = redirect
domains = +local_domains
allow_fail
allow_defer
data = ${lookup mysql{SELECT recipients FROM aliases WHERE local_part='${local_part}' AND domain='${domain}'}}
.ifdef SYSTEM_ALIASES_USER
user = SYSTEM_ALIASES_USER
.endif
.ifdef SYSTEM_ALIASES_GROUP
group = SYSTEM_ALIASES_GROUP
.endif
.ifdef SYSTEM_ALIASES_FILE_TRANSPORT
file_transport = SYSTEM_ALIASES_FILE_TRANSPORT
.endif
.ifdef SYSTEM_ALIASES_PIPE_TRANSPORT
pipe_transport = SYSTEM_ALIASES_PIPE_TRANSPORT
.endif
.ifdef SYSTEM_ALIASES_DIRECTORY_TRANSPORT
directory_transport = SYSTEM_ALIASES_DIRECTORY_TRANSPORT
.endif


rassylka:
debug_print = "R: rassylka for $local_part@$domain"
driver = redirect
allow_fail
allow_defer
senders = ${lookup mysql{SELECT who FROM userforward WHERE local_part='${local_part}' AND domain='${domain}'}}
data = ${lookup mysql{SELECT recipients FROM userforward WHERE local_part='${local_part}' AND domain='${domain}'}}
forbid_pipe
forbid_file
errors_to = postmaster

.ifdef DCconfig_satellite
hub_user:
debug_print = "R: hub_user for $local_part@$domain"
driver = redirect
domains = +local_domains
data = ${local_part}@DCreadhost
check_local_user
hub_user_smarthost:
debug_print = "R: hub_user_smarthost for $local_part@$domain"
driver = manualroute
domains = DCreadhost
transport = remote_smtp_smarthost
route_list = * DCsmarthost byname
host_find_failed = defer
same_domain_copy_routing = yes
check_local_user
.endif
local_delivery_spam_router:
    driver = accept
    domains = +local_domains
    condition = ${if >{$spam_score_int}{75}{yes}{no}}
    transport = local_delivery_spam_transport
    no_more
userforward:
debug_print = "R: userforward for $local_part@$domain"
driver = redirect
domains = +local_domains
check_local_user
file = $home/.forward
no_expn
check_ancestor
allow_filter = true
forbid_smtp_code = true
directory_transport = address_directory
file_transport = address_file
pipe_transport = address_pipe
reply_transport = address_reply
skip_syntax_errors
syntax_errors_to = real-$local_part@$domain
syntax_errors_text = \
This is an automatically generated message. An error has\n\
been found in your .forward file. Details of the error are\n\
reported below. While this error persists, you will receive\n\
a copy of this message for every message that is addressed\n\
to you. If your .forward file is a filter file, or if it is\n\
a non-filter file containing no valid forwarding addresses,\n\
a copy of each incoming message will be put in your normal\n\
mailbox. If a non-filter file contains at least one valid\n\
forwarding address, forwarding to the valid addresses will\n\
happen, and those will be the only deliveries that occur.
procmail:
debug_print = "R: procmail for $local_part@$domain"
driver = accept
domains = +local_domains
check_local_user
transport = procmail_pipe
require_files = ${local_part}:\
${if exists{/etc/procmailrc}\
{/etc/procmailrc}{${home}/.procmailrc}}:\
+/usr/bin/procmail
no_verify
no_expn
maildrop:
debug_print = "R: maildrop for $local_part@$domain"
driver = accept
domains = +local_domains
check_local_user
transport = maildrop_pipe
require_files = ${local_part}:${home}/.mailfilter:+/usr/bin/maildrop
no_verify
no_expn
.ifndef FIRST_USER_ACCOUNT_UID
FIRST_USER_ACCOUNT_UID = 0
.endif
.ifndef DEFAULT_SYSTEM_ACCOUNT_ALIAS
DEFAULT_SYSTEM_ACCOUNT_ALIAS = :fail: no mail to system accounts
.endif
COND_SYSTEM_USER_AND_REMOTE_SUBMITTER = "\
${if and{{! match_ip{$sender_host_address}{:@[]}}\
{<{$local_user_uid}{FIRST_USER_ACCOUNT_UID}}}\
{1}{0}\
        }"
lowuid_aliases:
debug_print = "R: lowuid_aliases for $local_part@$domain (UID $local_user_uid)"
check_local_user
driver = redirect
allow_fail
domains = +local_domains
condition = COND_SYSTEM_USER_AND_REMOTE_SUBMITTER
data = ${if exists{/etc/exim4/lowuid-aliases}\
{${lookup{$local_part}lsearch{/etc/exim4/lowuid-aliases}\
{$value}{DEFAULT_SYSTEM_ACCOUNT_ALIAS}}}{DEFAULT_SYSTEM_ACCOUNT_ALIAS}}
local_user:
debug_print = "R: local_user for $local_part@$domain"
driver = accept
domains = +local_domains
check_local_user
local_parts = ! root
transport = dovecot_delivery
mail4root:
debug_print = "R: mail4root for $local_part@$domain"
driver = redirect
domains = +local_domains
data = /var/mail/mail
file_transport = address_file
local_parts = root
user = mail
group = mail
mysqluser:
debug_print = "R: mysqluser for $local_part@$domain"
driver = accept
condition = ${if eq{} {${lookup mysql{SELECT home FROM users WHERE id='${local_part}' AND mbox_host='${domain}' AND active='Y'}}}{no}{yes}}
transport = dovecot_delivery

begin transports
local_delivery_spam_transport:
debug_print = "R: mysql_transport for $local_part@$domain"
driver = appendfile
check_string = ""
create_directory
delivery_date_add
directory = ${lookup mysql{SELECT CONCAT(home, "/Maildir/.Junk") FROM users WHERE id='${local_part}' AND mbox_host='${domain}'}}
directory_mode = 660
envelope_to_add
user = ${lookup mysql{SELECT uid FROM users WHERE id='${local_part}'}}
group = mail
maildir_format
maildir_tag = ,S=$message_size
message_prefix = ""
message_suffix = ""
mode = 0600
quota = ${lookup mysql{SELECT quota FROM users WHERE id='${local_part}' AND mbox_host='${domain}'}{${value}M}}
quota_size_regex = S=(\d+)$
quota_warn_threshold = 75%
return_path_add
dovecot_delivery:
debug_print = "T: dovecot_deliver for $local_part@$domain"
driver = pipe
command = /usr/lib/dovecot/deliver -e -k -s -f "$sender_address" -a "$original_local_part@$original_domain"
use_shell
environment = USER=$local_part@$domain
umask = 002
message_prefix =
message_suffix =
delivery_date_add
envelope_to_add
return_path_add
log_output
log_defer_output
return_fail_output
freeze_exec_fail
temp_errors = 64 : 69 : 70 : 71 : 72 : 73 : 74 : 75 : 78

mysql_delivery:
debug_print = "R: mysql_transport for $local_part@$domain"
driver = appendfile
check_string = ""
create_directory
delivery_date_add
directory = ${lookup mysql{SELECT CONCAT(home, "/Maildir") FROM users WHERE id='${local_part}' AND mbox_host='${domain}'}}
directory_mode = 660
envelope_to_add
user = ${lookup mysql{SELECT uid FROM users WHERE id='${local_part}'}}
group = mail
maildir_format
maildir_tag = ,S=$message_size
message_prefix = ""
message_suffix = ""
mode = 0600
quota = ${lookup mysql{SELECT quota FROM users WHERE id='${local_part}' AND mbox_host='${domain}'}{${value}M}}
quota_size_regex = S=(\d+)$
quota_warn_threshold = 75%
return_path_add
.ifdef HIDE_MAILNAME
REMOTE_SMTP_HEADERS_REWRITE=*@+local_domains $1@DCreadhost frs : *@ETC_MAILNAME $1@DCreadhost frs
REMOTE_SMTP_RETURN_PATH=${if match_domain{$sender_address_domain}{+local_domains}{${sender_address_local_part}@DCreadhost}{${if match_domain{$sender_address_domain}{ETC_MAILNAME}{${sender_address_local_part}@DCreadhost}fail}}}
.endif
.ifdef REMOTE_SMTP_HELO_FROM_DNS
REMOTE_SMTP_HELO_DATA=${lookup dnsdb {ptr=$sending_ip_address}{$value}{$primary_hostname}}
.endif
address_file:
debug_print = "T: address_file for $local_part@$domain"
driver = appendfile
delivery_date_add
envelope_to_add
return_path_add
address_pipe:
debug_print = "T: address_pipe for $local_part@$domain"
driver = pipe
return_fail_output
address_reply:
debug_print = "T: autoreply for $local_part@$domain"
driver = autoreply
mail_spool:
debug_print = "T: appendfile for $local_part@$domain"
driver = appendfile
delivery_date_add
envelope_to_add
return_path_add
group = mail
mode = 0660
directory = ${lookup mysql{SELECT CONCAT(home, "/Maildir") FROM users WHERE id='${local_part}' AND mbox_host='${domain}'}}
maildir_format
mode_fail_narrower = false
maildir_home:
debug_print = "T: maildir_home for $local_part@$domain"
driver = appendfile
.ifdef MAILDIR_HOME_MAILDIR_LOCATION
directory = MAILDIR_HOME_MAILDIR_LOCATION
.else
directory = $home/Maildir
.endif
.ifdef MAILDIR_HOME_CREATE_DIRECTORY
create_directory
.endif
.ifdef MAILDIR_HOME_CREATE_FILE
create_file = MAILDIR_HOME_CREATE_FILE
.endif
delivery_date_add
envelope_to_add
return_path_add
maildir_format
.ifdef MAILDIR_HOME_DIRECTORY_MODE
directory_mode = MAILDIR_HOME_DIRECTORY_MODE
.else
directory_mode = 0700
.endif
.ifdef MAILDIR_HOME_MODE
mode = MAILDIR_HOME_MODE
.else
mode = 0600
.endif
mode_fail_narrower = false
maildrop_pipe:
debug_print = "T: maildrop_pipe for $local_part@$domain"
driver = pipe
path = "/bin:/usr/bin:/usr/local/bin"
command = "/usr/bin/maildrop"
return_path_add
delivery_date_add
envelope_to_add
procmail_pipe:
debug_print = "T: procmail_pipe for $local_part@$domain"
driver = pipe
path = "/bin:/usr/bin:/usr/local/bin"
command = "/usr/bin/procmail"
return_path_add
delivery_date_add
envelope_to_add
remote_smtp:
debug_print = "T: remote_smtp for $local_part@$domain"
driver = smtp
.ifdef REMOTE_SMTP_HOSTS_AVOID_TLS
hosts_avoid_tls = REMOTE_SMTP_HOSTS_AVOID_TLS
.endif
.ifdef REMOTE_SMTP_HEADERS_REWRITE
headers_rewrite = REMOTE_SMTP_HEADERS_REWRITE
.endif
.ifdef REMOTE_SMTP_RETURN_PATH
return_path = REMOTE_SMTP_RETURN_PATH
.endif
.ifdef REMOTE_SMTP_HELO_FROM_DNS
helo_data=REMOTE_SMTP_HELO_DATA
.endif
remote_smtp_smarthost:
debug_print = "T: remote_smtp_smarthost for $local_part@$domain"
driver = smtp
hosts_try_auth = <; ${if exists{CONFDIR/passwd.client} \
{\
${lookup{$host}nwildlsearch{CONFDIR/passwd.client}{$host_address}}\
}\
{} \
}
.ifdef REMOTE_SMTP_SMARTHOST_HOSTS_AVOID_TLS
hosts_avoid_tls = REMOTE_SMTP_SMARTHOST_HOSTS_AVOID_TLS
.endif
.ifdef REMOTE_SMTP_HEADERS_REWRITE
headers_rewrite = REMOTE_SMTP_HEADERS_REWRITE
.endif
.ifdef REMOTE_SMTP_RETURN_PATH
return_path = REMOTE_SMTP_RETURN_PATH
.endif
.ifdef REMOTE_SMTP_HELO_FROM_DNS
helo_data=REMOTE_SMTP_HELO_DATA
.endif
spamcheck:
driver = pipe
command = /usr/sbin/exim4 -oMr spam-scanned -bS
use_bsmtp = true
transport_filter = /usr/bin/spamc -u $local_part
home_directory = "/tmp"
current_directory = "/tmp"
user = Debian-exim
group = mail
return_fail_output = true
message_prefix =
message_suffix =

spamassassin:
driver = pipe
use_bsmtp = true
command = /usr/sbin/exim4 -bS -oMr sa-checked
transport_filter = /usr/bin/spamc -f
home_directory = "/tmp"
current_directory = "/tmp"
user = Debian-exim
group = mail
log_output = true
return_fail_output = true
return_path_add = false
address_directory:
debug_print = "T: address_directory for $local_part@$domain"
driver = appendfile
delivery_date_add
envelope_to_add
return_path_add
check_string = ""
escape_string = ""
maildir_format
begin retry
* * F,2h,15m; G,16h,1h,1.5; F,4d,6h
begin rewrite
.ifndef NO_EAA_REWRITE_REWRITE
*@+local_domains "${lookup{${local_part}}lsearch{/etc/email-addresses}\
{$value}fail}" Ffrs
*@ETC_MAILNAME "${lookup{${local_part}}lsearch{/etc/email-addresses}\
{$value}fail}" Ffrs
.endif
begin authenticators
plain_server:
driver = plaintext
public_name = PLAIN
server_condition = "${lookup mysql{SELECT id FROM users \
WHERE id = '${quote_mysql:${local_part:$auth2}}' \
AND mbox_host = '${quote_mysql:${domain:$auth2}}' \
AND password = '${quote_mysql:$auth3}' \
AND active = 'Y'}{yes}{no}}"
server_set_id = $auth2
server_prompts = :
.ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS
server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}}
.endif
login_server:
driver = plaintext
public_name = LOGIN
server_prompts = "Username:: : Password::"
server_condition = "${lookup mysql{SELECT id FROM users \
WHERE id = '${quote_mysql:${local_part:$auth1}}' \
AND mbox_host = '${quote_mysql:${domain:$auth1}}' \
AND password = '${quote_mysql:$auth2}' \
AND active = 'Y'}{yes}{no}}"
server_set_id = $auth1
.ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS
server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}}
.endif
cram_md5_server:
driver = cram_md5
public_name = CRAM-MD5
server_secret = ${lookup mysql{SELECT password FROM users \
WHERE id = '${quote_mysql:${local_part:$auth1}}' \
AND mbox_host = '${quote_mysql:${domain:$auth1}}' \
AND active = 'Y'}{$value}fail}
server_set_id = $auth1
cram_md5:
driver = cram_md5
public_name = CRAM-MD5
client_name = ${extract{1}{:}{${lookup{$host}nwildlsearch{CONFDIR/passwd.client}{$value}fail}}}
client_secret = ${extract{2}{:}{${lookup{$host}nwildlsearch{CONFDIR/passwd.client}{$value}fail}}}
PASSWDLINE=${sg{\
${lookup{$host}nwildlsearch{CONFDIR/passwd.client}{$value}fail}\
     }\
     {\\N[\\^]\\N}\
     {^^}\
     }
plain:
driver = plaintext
public_name = PLAIN
.ifndef AUTH_CLIENT_ALLOW_NOTLS_PASSWORDS
client_send = "<; ${if !eq{$tls_cipher}{}\
{^${extract{1}{:}{PASSWDLINE}}\
         ^${sg{PASSWDLINE}{\\N([^:]+(.*)\\N}{\\$2}}\
         }fail}"
.else
client_send = "<; ^${extract{1}{:}{PASSWDLINE}}\
         ^${sg{PASSWDLINE}{\\N([^:]+(.*)\\N}{\\$2}}"
.endif
login:
driver = plaintext
public_name = LOGIN
.ifndef AUTH_CLIENT_ALLOW_NOTLS_PASSWORDS
client_send = "<; ${if and{\
{!eq{$tls_cipher}{}}\
{!eq{PASSWDLINE}{}}\
}\
{}fail}\
; ${extract{1}{::}{PASSWDLINE}}\
         ; ${sg{PASSWDLINE}{\\N([^:]+(.*)\\N}{\\$2}}"
.else
client_send = "<; ${if !eq{PASSWDLINE}{}\
{}fail}\
; ${extract{1}{::}{PASSWDLINE}}\
         ; ${sg{PASSWDLINE}{\\N([^:]+(.*)\\N}{\\$2}}"
.endif[/more] мой конфиг...
Тут для вас может быть куча лишнего... К тому же у меня там могут быть не удалены не используемые транспорта и роутеры, т.к. я долго экспериментировал когда все настраивал... Ну и комменты кое где завалялись - grep всё не вычистил...
Так же я вроде как отключил (описание все равно в конфиге осталось) "серые списки"(GreyLists) т.к. они вынуждают сервер отправителя повторить свое письмо, а у некоторых тайм аут очень велик и так я попросту не дождусь письма вовремя (у gmail этот тайм аут всего пару минут, но не все такие же благоприятные клиенты для greylists...)

Скажу так - с учетом того, что мыло с этого сервера я использую для регистрации где попало, спама мне вообще не приходит... Редкий случай... Правда еще настроен SpamAssassin с весьма низким пропускным порогом (7,5баллов) и немного изменены набираемые очки за такие вещи как "русские домены" - ни за что ни про что mail.ru выхватывал лишние 2,5балаа (или около того)...
Так же обращу внимание, если доберетесь все-таки до транспорта, что письма в ящик пользователю у меня фасует dovecot - это сделано ради протокола sieve и пользовательских фильтров в roundcube.
Автор: Siv Soft
Дата сообщения: 29.08.2011 16:38
Настроил exim взяв за основу конфиг lissyara + с некоторыми изменениями. Все поднялось - принимает, получает, но есть проблемы:
1. На некоторые адреса не могу отправить почту - удаленный сервер выдает(XXX-XXX-XX-XX - мой IP типа):
host mail.ukrpost.ua [82.207.79.154]: 550 Not authenticated from XXX-XXX-XX-XX.static.vega-ua.net
Понимаю что проблема в том, что отправка идет от странного имени XXX-XXX-XX-XX.static.vega-ua.net, но что можно предпринять не пойму.
2. На несколько ящиков сыпется куча спама. Спам частично не пускается в настройках exim'а , но не в этих случаях. Что можно сделать для более эффективной отброски спама, а то в паре ящиков вообще по 14-15 писем в день приходят.
Автор: vlary
Дата сообщения: 29.08.2011 16:51
Siv Soft 1. Ну, с адресов типа XXX-XXX-XX-XX.static.vega-ua.net я почту тоже рублю. Требуй у провайдера, чтобы он прописал для твоего айпи обратную зону, соответствующую имени в прямой зоне.
2. Посмотри у того же lissyara конфиг с серыми списками. А вообще ограничивать спам - это искусство, ему учатся годами.
Автор: Siv Soft
Дата сообщения: 29.08.2011 17:30
vlary
1. попробую, но хотелось бы знать и альтернативный метод. может отсылать все на сервер хостера - тогда все путем? Только не пойму как это настроить - где?
2. Если не сложно, а где у него была такая статья - чет не нашел...

и еще
3. Странный наверное вопрос возник. Всю жизнь пользуюсь на работе в разных организациях локальными почтовыми серверами - настраиваю и у людей почта доменная приходит на сервак, а там сортируется. Но недавно поставили в тупик - руководитель спросил - с подачи умняков которые сайт делают - они сейчас себя продвигают, а зачем нам у себя почтовый сервер, если можно пользоваться тем, который дает хостер - типа ящики посоздавать там и коннектиться клиентами. Я конечно ему что-то ответил. А потом сел и думаю, а действительно зачем? Чего-то в голову ничего не приходит - чем существенно лучше иметь локальный почтовый сервер, чем хостовый. Поделитесь мнением плиз.
Автор: vlary
Дата сообщения: 29.08.2011 18:11
Siv Soft
Цитата:
может отсылать все на сервер хостера - тогда все путем?
Может и так. У него то наверняка с прямыми и обратными зонами порядок. А отправку через смартхост позволяет любой сервер, и Эксим не исключение.

Цитата:
Если не сложно, а где у него была такая статья
Там ссылка была Adding Greylisting Support
Или вот еще, по русски: Exim, спам и настройка GreyList
Ну и кое-какие полезные советы дополнительной защиты:
Полезные скрипты/настройки для exim.

Цитата:
чем существенно лучше иметь локальный почтовый сервер, чем хостовый.
Чем лучше иметь личную машину, чем пользоваться такси?

Автор: Siv Soft
Дата сообщения: 30.08.2011 00:34
Смотрел но немного не получается. Дело в том что стоит fetchmail и при получении письма exim записывает в грейлист relay_ip 127.0.0.1. Фетчмейл опять ему посылает письмо тот опять отбрасывает и так далее, не знаю что нужно перенастроить, так как в таком случае получение письма (скорость) полностью будут зависеть от фетчмейла и как тут отфильтруешь? Может что посоветуете?

З.Ы. Поясню настроено так - все сваливается в один хостовый ящик, а фетчмейл оттуда забирает и передает уже экзиму...
Автор: vlary
Дата сообщения: 30.08.2011 11:53
Siv Soft
hostlist local_hosts = 127.0.0.1 : 192.168.1.1 : X.X.X.X
hostlist relay_from_hosts = 192.168.1.0/24 : X.X.X.0/24
И во всех акцесс-листах вставить первыми строчками:
accept hosts = :
accept hosts = +local_hosts : +relay_from_hosts
Автор: rovud
Дата сообщения: 06.09.2011 01:32
Здравствуйте!
Не подскажете, как ограничить скорость отправки на каждый домен, например, двумя письмами в минуту? Т.е. на разные домены можно слать хоть пачками, но не более двух писем в минуту на домен.
Автор: vlary
Дата сообщения: 06.09.2011 11:19
rovud
Цитата:
Не подскажете, как ограничить скорость отправки на каждый домен, например, двумя письмами в минуту?
Довольно грубое, но зато простое решение:
1. Отключить немедленную доставку, всю исходящую почту помещать в очередь (опция -odq).
2. Выставить интервал обработки очереди 5 минут (опция -q5m)
3. Значение remote_max_parallel выставить в единицу.
4. Значение connection_max_messages выставить 10.
Таким образом, будем иметь в среднем 2 письма в минуту на домен.

Автор: rovud
Дата сообщения: 06.09.2011 12:29
Я вот такое решение нашёл
begin routers
remote_domains_throttled:
driver = dnslookup
domains = \N^yahoo\.\N
retry_use_local_part
transport = throttled_smtp

begin transports
throttled_smtp:
driver = smtp
connection_max_messages = 5
serialize_hosts = *
retry_use_local_part
Получается, что тут одно соединение в единицу времени и 5 сообщений за одно соединение. Может, этот кусок как то переделать? А какие вообще опции ещё можно использовать в транспортах, кроме connection_max_messages?
Автор: Siv Soft
Дата сообщения: 06.09.2011 12:54
С провайдером, что-то не получается - опять назад поменял - каждый раз вызванивать говорить - это не дело. Подскажите плиз, как отправлять письма конкретно на хостера - где настройка - а то искал и не пойму...
Автор: vlary
Дата сообщения: 06.09.2011 13:25
rovud
Цитата:
Может, этот кусок как то переделать?
Ну, domains = \N^yahoo\.\N лучше наверное заменить списком из файла
Цитата:
А какие вообще опции ещё можно использовать в транспортах, кроме connection_max_messages?
Там их много. Смотри в мануале главу The smtp transport


Добавлено:
Siv Soft
Цитата:
Подскажите плиз, как отправлять письма конкретно на хостера - где настройка - а то искал и не пойму...

...skipping...
driver = manualroute
domains = ! +our_domains (все, что не ваши)
transport = main_smtp
route_list = * mail.hoster.ru
...skipping...
main_smtp:
driver = smtp
interface = "внешний айпи почтовика"

Автор: AkeHayc
Дата сообщения: 06.09.2011 14:31
Устанавливаю Exim на CentOS 6.
Возникла проблема с Vexim, при заходе на страничку http://127.0.0.1/vexim
Сыплются ошибки в логах:


Код: Tue Sep 06 07:18:11 2011] [error] [client 127.0.0.1] PHP Notice: Undefined index: realname in /var/www/html/vexim/config/variables.php on line 63, referer: http://127.0.0.1/vexim/index.php?login=failed
[Tue Sep 06 07:18:11 2011] [error] [client 127.0.0.1] PHP Notice: Undefined index: localpart in /var/www/html/vexim/config/variables.php on line 65, referer: http://127.0.0.1/vexim/index.php?login=failed
[Tue Sep 06 07:18:11 2011] [error] [client 127.0.0.1] PHP Notice: Undefined variable: _SESSION in /var/www/html/vexim/config/variables.php on line 65, referer: http://127.0.0.1/vexim/index.php?login=failed
[Tue Sep 06 07:18:11 2011] [error] [client 127.0.0.1] PHP Notice: Undefined variable: _SESSION in /var/www/html/vexim/config/variables.php on line 66, referer: http://127.0.0.1/vexim/index.php?login=failed
[Tue Sep 06 07:18:11 2011] [error] [client 127.0.0.1] PHP Notice: Undefined variable: _SESSION in /var/www/html/vexim/config/variables.php on line 67, referer: http://127.0.0.1/vexim/index.php?login=failed
[Tue Sep 06 07:18:11 2011] [error] [client 127.0.0.1] PHP Notice: Undefined index: domain in /var/www/html/vexim/config/variables.php on line 71, referer: http://127.0.0.1/vexim/index.php?login=failed
[Tue Sep 06 07:18:11 2011] [error] [client 127.0.0.1] File does not exist: /var/www/html/roundcube
[Tue Sep 06 07:18:11 2011] [error] [client 127.0.0.1] PHP Notice: Undefined variable: domheaderrow in /var/www/html/vexim/config/header.php on line 15, referer: http://127.0.0.1/vexim/index.php?login=failed
[Tue Sep 06 07:18:11 2011] [error] [client 127.0.0.1] PHP Notice: Undefined variable: domheaderrow in /var/www/html/vexim/config/header.php on line 15, referer: http://127.0.0.1/vexim/index.php?login=failed
[Tue Sep 06 07:18:11 2011] [error] [client 127.0.0.1] PHP Notice: Undefined variable: usrheaderrow in /var/www/html/vexim/config/header.php on line 17, referer: http://127.0.0.1/vexim/index.php?login=failed
[Tue Sep 06 07:18:11 2011] [error] [client 127.0.0.1] PHP Notice: Undefined variable: usrheaderrow in /var/www/html/vexim/config/header.php on line 17, referer: http://127.0.0.1/vexim/index.php?login=failed
[Tue Sep 06 07:18:12 2011] [error] [client 127.0.0.1] File does not exist: /var/www/html/favicon.ico
[Tue Sep 06 07:18:12 2011] [error] [client 127.0.0.1] File does not exist: /var/www/html/favicon.ico
[Tue Sep 06 07:18:15 2011] [error] [client 127.0.0.1] File does not exist: /var/www/html/favicon.ico
[Tue Sep 06 07:18:15 2011] [error] [client 127.0.0.1] File does not exist: /var/www/html/favicon.ico
Автор: Siv Soft
Дата сообщения: 06.09.2011 15:54
Не пойму, что делать с remote_smtp, сначала его закомментил и оставил только тот, который вы предложили. Теперь вижу в логах ошибки - оно и понятно вот как он используется:

dnslookup:
driver = dnslookup
domains = ! +local_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
no_more

Т.е. как я понимаю проверяет того кто шлет письма есть ли такой адресат, но если ставить remote_smtp, а там только указание driver=smtp, то начинает сразу слать почту через провайдера, естественно с ошибках на некоторые домены.
Может для dns_lookup поставить main_smtp, что вы предложили с интерфесом на хостера? Правильно так будет?

Добавлено:
Уже никакой логики не вижу - почта вообще перестала уходить
Причем хоть ставлю все назад, хоть делаю изменения - все равно - не уходит!!!


Код:
Sep 6 16:15:52 python exim[22446]: no host name found for IP address 192.168.1.10
Sep 6 16:15:52 python exim[22446]: Delay 0s for [192.168.1.10] with HELO=[192.168.1.10]. Mail from office@my.domain to my.mail@gmail.com.
Sep 6 16:15:56 python exim[22446]: 1R0vVM-0005q2-Ar <= office@my.domain H=([192.168.1.10]) [192.168.1.10] I=[192.168.1.2]:25 P=esmtp S=543 id=20110906161334.CD2F.89EE24BC@my.domain from <office@my.domain> for my.mail@gmail.com
Sep 6 16:15:56 python exim[22447]: 1R0vVM-0005q2-Ar == my.mail@gmail.com R=dnslookup T=main_smtp defer (-53): retry time not reached for any host
Автор: vlary
Дата сообщения: 06.09.2011 16:29
Siv Soft manualroute должен быть раньше dnslookup. Да по сути дела dnslookup вообще не должно быть, коль скоро вся внешняя почта уходит на сервер хостера.

Автор: rovud
Дата сообщения: 06.09.2011 16:37

Цитата:
connection_max_messages = 5
serialize_hosts = *

За соединение передаётся 5 сообщений. А соединение после этого сразу устанавливается новое? Т.е. если надо отправить на один домен 10 писем, то сначала отправятся 5, потом сразу будет создано соединение и отправлено ещё 5? Как то можно регулировать время между соединениями к одному хосту? Я всё пытаюсь высчитать количество писем в минуту, чтобы привести к двум сообщениям
Автор: Siv Soft
Дата сообщения: 06.09.2011 16:41
Все тоже самое. Даже убирал полностью dns_lookup. Куда копать?


Код:
R=hoster_router T=main_smtp defer (-53): retry time not reached for any host
Автор: vlary
Дата сообщения: 06.09.2011 18:16
rovud
Цитата:
А соединение после этого сразу устанавливается новое?
Не знаю. Это в логах нужно смотреть. Такой задачи не было, потому глубоко не копал.
По идее, если стоит serialize_hosts = * , то он должен прекратить обработку очереди, достигнув конца ее, даже для некоторых доменов остались неотправленные письма.
Siv Soft
Цитата:
а как тогда фильтровать почту многие любят пытаться использовать как релей для спама
А причем здесь роутер dns_lookup? Он нужен лишь для того, чтобы по имени домена найти его МХ, и отправить через него почту. А антирелей настраивается в акцесс-листах, и правило там простое - если хост не в вашей или дружественной вам сети, то он может отправлять вам почту только с адресами получателей ваших доменов.



Автор: Siv Soft
Дата сообщения: 06.09.2011 19:47
vlary спасибо, разобрался. У меня неправильно стоял интерфейс - я поставил зачем-то айпи-шник хостера. И указал неверно в route_list - раньше было mail.mydomen - теперь убрали, а я указывал по-старому. Теперь все уходит

Единственно вопрос еще остался - вы указали

Код: interface = "внешний айпи почтовика"
Автор: vlary
Дата сообщения: 06.09.2011 20:44
Siv Soft
Цитата:
Обязательны ли кавычки для айпишника почтового сервера?
Да нет конечно! Я взял это в кавычки просто потому, что не знаю реального айпи и заменил его объяснением. Конечно, айпи_вашего_сервера написать было бы лучше, но я не думал, что будут такие непонятки...

Страницы: 123456789101112131415161718192021

Предыдущая тема: Посоветуйте девайс для орг-ии VPN


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.