EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты
Модератор: xM
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
yarnik
- рядовой
- Сообщения: 12
- Зарегистрирован: 2011-06-17 17:51:37
Непрочитанное сообщение
yarnik » 2011-06-17 18:00:45
Здравствуйте!
Помогите пожалуйста разобраться, почему то когда отправляется письмо, то подставляется не верный обратный адрес "
admin@myhost.com", хотя в скрипте я ставлю от "
robot@my.com"
------------ скрипт --------------
Код: Выделить всё
$rmail='robot@my.com';
$tomail=user@user.com';
open (MAIL, "|/usr/sbin/sendmail -t -i -f $rmail");
print MAIL "To: $tomail\n";
print MAIL "From: $rmail\n";
print MAIL "Content-Type: text/html; charset=windows-1251\n";
print MAIL "Subject: test5\n";
print MAIL "Mime-Version: 1.0\n\n";
print MAIL "test5";
close(MAIL);
------ лог -------------------
Код: Выделить всё
2011-06-16 17:03:38 cwd=/usr/home/admin/data/www/my_site.com 5 args: /usr/sbin/sendmail -t -i -f robot@my.com
2011-06-16 17:03:39 1QXDAZ-000MHZ-0v <= admin@myhost.com U=admin P=local S=453 T="test5" from < admin@myhost.com> for user@user.com
2011-06-16 17:03:39 cwd=/var/spool/exim 3 args: /usr/local/sbin/exim -Mc 1QXDAZ-000MHZ-0v
2011-06-16 17:03:39 1QXDAZ-000MHZ-0v ** user@user.com R=dnslookup T=remote_smtp: SMTP error from remote mail server after RCPT TO:<user@user.com>: host user_site.com [XXX.XXX.XXX.XXX]: 550-Verification failed for <admin@myhost.com>\n550-Previous (cached) callout verification failure\n550 Sender verify failed
2011-06-16 17:03:39 cwd=/var/spool/exim 7 args: /usr/local/sbin/exim -t -oem -oi -f <> -E1QXDAZ-000MHZ-0v
2011-06-16 17:03:39 1QXDAZ-000MHe-Gw <= <> R=1QXDAZ-000MHZ-0v U=mailnull P=local S=1501 T="Mail delivery failed: returning message to sender" from <> for admin@myhost.com
2011-06-16 17:03:39 cwd=/var/spool/exim 3 args: /usr/local/sbin/exim -Mc 1QXDAZ-000MHe-Gw
2011-06-16 17:03:39 1QXDAZ-000MHZ-0v Completed
yarnik
-
Хостинг HostFood.ru
-
Хостинг HostFood.ru
Тарифы на хостинг в России, от 12 рублей:
https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.:
https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах:
https://www.host-food.ru/domains/
-
Electronik
- капитан
- Сообщения: 1593
- Зарегистрирован: 2008-11-15 17:32:56
- Откуда: Минск
-
Контактная информация:
Непрочитанное сообщение
Electronik » 2011-06-17 18:59:03
Предскажем будущее hw по логам и дампу, снимем сглаз и порчу с рута, поможем придумать пароль(С)
Блог
Electronik
-
yarnik
- рядовой
- Сообщения: 12
- Зарегистрирован: 2011-06-17 17:51:37
Непрочитанное сообщение
yarnik » 2011-06-17 20:22:03
нет, ничего не изменилось...
Код: Выделить всё
2011-06-17 20:16:56 cwd=/usr/home/admin/data/www/rup.com.ua 5 args: /usr/sbin/sendmail -t -i -f robot@my.com
2011-06-17 20:16:56 cwd=/var/spool/exim 7 args: /usr/local/sbin/exim -t -oem -oi -f <> -E1QXcfA-000OA8-MS
2011-06-17 20:16:56 1QXcfA-000OA9-Mi <= <> R=1QXcfA-000OA8-MS U=mailnull P=local S=858 T="Mail failure - no recipient addresses" from <> for admin@host.com
2011-06-17 20:16:56 cwd=/var/spool/exim 3 args: /usr/local/sbin/exim -Mc 1QXcfA-000OA9-Mi
2011-06-17 20:16:56 cwd=/tmp 4 args: /usr/local/sbin/exim -oMr spam-scanned -bS
2011-06-17 20:16:57 1QXcfA-000OAC-No <= <> U=mailnull P=spam-scanned S=1196 id=E1QXcfA-000OA9-Mi@host.com T="Mail failure - no recipient addresses" from <> for admin@host.com
2011-06-17 20:16:57 cwd=/var/spool/exim 3 args: /usr/local/sbin/exim -Mc 1QXcfA-000OAC-No
2011-06-17 20:16:57 1QXcfA-000OAC-No ** admin@host.com R=unknown_users: Unknown user
2011-06-17 20:16:57 1QXcfA-000OAC-No Frozen (delivery error message)
2011-06-17 20:16:57 1QXcfA-000OA9-Mi => admin <admin@host.com> R=spamcheck_router T=spamcheck
2011-06-17 20:16:57 1QXcfA-000OA9-Mi Completed
yarnik
-
Electronik
- капитан
- Сообщения: 1593
- Зарегистрирован: 2008-11-15 17:32:56
- Откуда: Минск
-
Контактная информация:
Непрочитанное сообщение
Electronik » 2011-06-17 22:21:43
что за скрипт, что отправляете,от какого пользователя, и случаем не через веб-интерфейс?
Предскажем будущее hw по логам и дампу, снимем сглаз и порчу с рута, поможем придумать пароль(С)
Блог
Electronik
-
yarnik
- рядовой
- Сообщения: 12
- Зарегистрирован: 2011-06-17 17:51:37
Непрочитанное сообщение
yarnik » 2011-06-17 23:26:19
Перл, сам скрипт предоставил в первом посте.
заливаю на сервер, логин юзера как раз "admin"
запускаю скрипт по http.
все.
yarnik
-
Electronik
- капитан
- Сообщения: 1593
- Зарегистрирован: 2008-11-15 17:32:56
- Откуда: Минск
-
Контактная информация:
Непрочитанное сообщение
Electronik » 2011-06-18 10:42:35
Код: Выделить всё
2011-06-17 20:16:57 1QXcfA-000OAC-No ** admin@host.com R=unknown_users: Unknown user
кажется проблема тут
Предскажем будущее hw по логам и дампу, снимем сглаз и порчу с рута, поможем придумать пароль(С)
Блог
Electronik
-
yarnik
- рядовой
- Сообщения: 12
- Зарегистрирован: 2011-06-17 17:51:37
Непрочитанное сообщение
yarnik » 2011-06-18 11:00:58
логично что тут, этого ящик не создан.
вообще не понятно почему он подставляет его.
admin@host.com - это составляющие 2 частей (логин пользователя + имя хостинга)
на всякий случай закину конфиг
Код: Выделить всё
SA_ENABLE = yes
FREEBSD = yes
SPAMCBIN=/usr/local/bin/spamc
EXIMBIN=/usr/local/sbin/exim
#hostlist relay_hosts = 127.0.0.1
hostlist relay_from_hosts = 127.0.0.1 : 77.120.116.161
domainlist local_domains = lsearch;/usr/local/etc/exim/domains
domainlist relay_to_domains = lsearch;/usr/local/etc/exim/domains
log_selector = \
+all_parents \
+lost_incoming_connection \
+received_sender \
+received_recipients \
+tls_cipher +tls_peerdn \
+smtp_confirmation \
+smtp_syntax_error \
+arguments \
+subject \
+smtp_protocol_error \
+arguments
# CONFDIR=__ISP_CONFDIR__
#daemon_smtp_port = 26:465
# tls_certificate = CONFDIR/certificate.crt
# tls_privatekey = CONFDIR/certificate.key
# tls_on_connect_ports = 465
.ifdef MAILMAN_ENABLE
MAILMAN_HOME=__MAILMAN_HOME__
MAILMAN_WRAP=__MAILMAN_WRAP__
MAILMAN_USER=__MAILMAN_USER__
MAILMAN_GROUP=__MAILMAN_GROUP__
.endif
trusted_groups = mgrsecure
trusted_users = www
domainlist dummy_domains =
exim_user = mailnull
exim_group = mail
.ifdef VIRUS_SCAN
av_scanner = __CLAMAV_SOCKET__
.endif
never_users = root
host_lookup = *
rfc1413_hosts = *
rfc1413_query_timeout = 0s
ignore_bounce_errors_after = 2d
timeout_frozen_after = 7d
auto_thaw = 1h
smtp_accept_max_per_host = 5
smtp_enforce_sync = true
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data
#acl_not_smtp = acl_not_smtp
begin acl
#acl_not_smtp:
# deny message = Sender rate overlimit - $sender_rate / $sender_rate_period
# ratelimit = 350 / 1h / leaky
# accept
acl_check_rcpt:
deny condition = ${if eq{$sender_helo_name} {$sender_host_address}{true}{false}}
hosts = * : !+relay_from_hosts : !81-196.host
message = "Your IP in HELO - access denied!"
# deny condition = ${if eq{$sender_helo_name} {$interface_address}{yes}{no}}
# hosts = !127.0.0.1 : !localhost : *
# message = "main 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 = "can not be only number in HELO!"
# deny condition = ${if match{$sender_host_name} {adsl|dialup|pool|peer|dhcp|dynamic|hinet.net|.tw} {yes}{no}}
# message = "your hostname is bad (adsl, poll, ppp & etc)."
warn
set acl_m0 = 30s
#deny message = Sender rate SMTP overlimit - $sender_rate / $sender_rate_period
#ratelimit = 350 / 1h / strict
#accept
accept hosts = net-lsearch;/usr/local/etc/exim/whitelist
deny hosts = net-lsearch;/usr/local/etc/exim/blacklist
message = $host_data
deny message = Restricted characters in address
domains = +local_domains
local_parts = ^[.] : ^.*[@%!/|]
deny message = Restricted characters in address
domains = !+local_domains
local_parts = ^[./|] : ^.*[@%!] : ^.*/\\.\\./
accept local_parts = postmaster
verify = recipient
domains = +local_domains
require verify = sender
.ifdef VIRUS_SCAN
warn set acl_m3 = no
warn set acl_m3 = ok
condition = ${lookup{$domain}lsearch{__ANTIVIRUS_DOMAINS__} {yes}{no}}
control = fakedefer
warn set acl_m3 = no
condition = ${lookup{$domain}lsearch{__ANTIVIRUS_DOMAINS__} {no}{yes}}
.endif
accept hosts = +relay_from_hosts
control = submission
accept authenticated = *
condition = ${if eq{${extract{5}{:}{${lookup{$authenticated_id}lsearch{/usr/local/etc/exim/passwd}}}}}{no} {yes}{no}}
condition = ${if eq{${extract{3}{:}{${lookup{${domain:$authenticated_id}}lsearch{/usr/local/etc/exim/domains}}}}}{no} {yes}{no}}
control = submission/domain=
deny message = rejected because $sender_host_address is in a black list at $dnslist_domain\\n$dnslist_text
dnslists = ${readfile {/usr/local/etc/exim/dnsblists}{:}}
require message = relay not permitted
domains = +local_domains : +relay_to_domains
require verify = recipient
.ifdef POSTGREY_SOCKET
defer log_message = greylisted host $sender_host_address
set acl_m0 = request=smtpd_access_policy\nprotocol_state=RCPT\nprotocol_name=${uc:$received_protocol}\nhelo_name=$sender_helo_name\nclient_address=$sender_host_address\nclient_name=$sender_host_name\nsender=$sender_address\nrecipient=$local_part@$domain\ninstance=$sender_host_address/$sender_address/$local_part@$domain\n\n
set acl_m0 = ${sg{${readsocket{POSTGREY_SOCKET}{$acl_m0}{5s}{}{action=DUNNO}}}{action=}{}}
message = ${sg{$acl_m0}{^\\w+\\s*}{}}
condition = ${if eq{${uc:${substr{0}{5}{$acl_m0}}}}{DEFER}{true}{false}}
.endif
accept
acl_check_data:
.ifdef VIRUS_SCAN
deny message = This message contains virus ($malware_name)
demime = *
malware = *
condition = ${if eq{$acl_m3}{ok}{yes}{no}}
.endif
accept
begin routers
dnslookup:
driver = dnslookup
domains = !+dummy_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
self = pass
no_more
disabled_domains:
driver = redirect
condition = ${extract{3}{:}{${lookup{$domain}lsearch{/usr/local/etc/exim/domains}}}}
allow_fail = yes
data = :fail: Domain disabled
no_more
disabled_users:
driver = redirect
condition = ${extract{5}{:}{${lookup{$local_part@$domain}lsearch{/usr/local/etc/exim/passwd}}}}
allow_fail = yes
data = :fail: User disabled
no_more
local_domains:
driver = redirect
data = ${quote_local_part:$local_part}@${extract{1}{:}{${lookup{$domain}lsearch{/usr/local/etc/exim/domains}}}}
cannot_route_message = Unknown user
no_more
.ifdef SA_ENABLE
spamcheck_router:
no_verify
condition = "${if and { {!def:h_X-Spam-Flag:} {!eq {$received_protocol}{spam-scanned}}} {1}{0}}"
driver = accept
transport = spamcheck
.endif
group_aliases:
driver = redirect
data = ${extract{1}{:}{${lookup{$local_part@$domain}lsearch{/usr/local/etc/exim/aliases}}}}
condition = ${if and{\
{exists{/usr/local/etc/exim/aliases}}\
{eq {${extract{2}{:}{${lookup{$local_part@$domain}lsearch{/usr/local/etc/exim/aliases}}}}} {group} }\
} {yes} {no} }
redirect_router = a_dnslookup
pipe_transport = address_pipe
aliases:
driver = redirect
data = ${extract{1}{:}{${lookup{$local_part@$domain}lsearch{/usr/local/etc/exim/aliases}}}}
condition = ${if exists{/usr/local/etc/exim/aliases} {yes} {no} }
pipe_transport = address_pipe
local_users:
driver = redirect
condition = ${lookup {$local_part@$domain} lsearch {/usr/local/etc/exim/passwd} {yes} {no} }
data = $local_part@$domain
redirect_router = autoreplay
.ifdef MAILMAN_ENABLE
mailman:
driver = accept
require_files = MAILMAN_HOME/lists/$local_part/config.pck
local_part_suffix_optional
local_part_suffix = -bounces : -bounces+* : -confirm+* : -join : -leave : -owner : -request : -admin : -subscribe : -unsubscribe
transport = mailman
mailman_isp:
driver = accept
require_files = MAILMAN_HOME/lists/$local_part-$domain/config.pck
local_part_suffix_optional
local_part_suffix = -bounces : -bounces+* : -confirm+* : -join : -leave : -owner : -request : -admin : -subscribe : -unsubscribe
transport = mailman_isp
.endif
catchall_for_domains:
driver = redirect
headers_add = X-redirected: yes
data = ${extract{2}{:}{${lookup{$domain}lsearch{/usr/local/etc/exim/domains}}}}
file_transport = local_delivery
unknown_users:
driver = redirect
allow_fail = yes
data = :fail: Unknown user
no_more
autoreplay:
driver = accept
condition = ${if exists{${extract{4}{:}{${lookup{$local_part@$domain}lsearch{/usr/local/etc/exim/passwd}}}}/message.txt} {yes} {no}}
retry_use_local_part
transport = address_reply
unseen
localuser:
driver = accept
transport = local_delivery
# Same routers without autoreplay
a_dnslookup:
driver = dnslookup
domains = !+dummy_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
self = pass
no_more
a_disabled_domains:
driver = redirect
condition = ${extract{3}{:}{${lookup{$domain}lsearch{/usr/local/etc/exim/domains}}}}
allow_fail = yes
data = :fail: Domain disabled
no_more
a_disabled_users:
driver = redirect
condition = ${extract{5}{:}{${lookup{$local_part@$domain}lsearch{/usr/local/etc/exim/passwd}}}}
allow_fail = yes
data = :fail: User disabled
no_more
a_local_domains:
driver = redirect
data = ${quote_local_part:$local_part}@${extract{1}{:}{${lookup{$domain}lsearch{/usr/local/etc/exim/domains}}}}
cannot_route_message = Unknown user
redirect_router = a_dnslookup
no_more
a_aliases:
driver = redirect
data = ${extract{1}{:}{${lookup{$local_part@$domain}lsearch{/usr/local/etc/exim/aliases}}}}
condition = ${if exists{/usr/local/etc/exim/aliases} {yes} {no} }
redirect_router = a_dnslookup
pipe_transport = address_pipe
a_local_users:
driver = accept
transport = local_delivery
condition = ${lookup {$local_part@$domain} lsearch {/usr/local/etc/exim/passwd} {yes} {no} }
.ifdef MAILMAN_ENABLE
a_mailman:
driver = accept
require_files = MAILMAN_HOME/lists/$local_part/config.pck
local_part_suffix_optional
local_part_suffix = -bounces : -bounces+* : -confirm+* : -join : -leave : -owner : -request : -admin : -subscribe : -unsubscribe
transport = mailman
a_mailman_isp:
driver = accept
require_files = MAILMAN_HOME/lists/$local_part-$domain/config.pck
local_part_suffix_optional
local_part_suffix = -bounces : -bounces+* : -confirm+* : -join : -leave : -owner : -request : -admin : -subscribe : -unsubscribe
transport = mailman_isp
.endif
a_catchall_for_domains:
driver = redirect
headers_add = X-redirected: yes
data = ${extract{2}{:}{${lookup{$domain}lsearch{/usr/local/etc/exim/domains}}}}
file_transport = local_delivery
redirect_router = a_dnslookup
begin transports
remote_smtp:
driver = smtp
local_delivery:
driver = appendfile
directory = ${extract{4}{:}{${lookup{$local_part@$domain}lsearch{/usr/local/etc/exim/passwd}}}}/.maildir
maildir_format
delivery_date_add
envelope_to_add
return_path_add
mode = 0660
quota = ${extract{3}{:}{${lookup{$local_part@$domain}lsearch{/usr/local/etc/exim/passwd}}}}M
quota_warn_threshold = 75%
use_lockfile = no
no_mode_fail_narrower
user = ${extract{1}{:}{${lookup{$local_part@$domain}lsearch{/usr/local/etc/exim/passwd}}}}
group = ${extract{2}{:}{${lookup{$local_part@$domain}lsearch{/usr/local/etc/exim/passwd}}}}
address_pipe:
driver = pipe
ignore_status
return_output
use_shell
address_reply:
driver = autoreply
headers = ${readfile{${extract{4}{:}{${lookup{$local_part@$domain}lsearch{/usr/local/etc/exim/passwd}}}}/message.txt}}
to = $sender_address
.ifdef MAILMAN_ENABLE
mailman_isp:
driver = pipe
command = MAILMAN_WRAP '${if def:local_part_suffix {${sg{$local_part_suffix}{-(\\w+)(\\+.*)?}{\$1}}} {post}}' $local_part-$domain
current_directory = MAILMAN_HOME
home_directory = MAILMAN_HOME
user = MAILMAN_USER
group = MAILMAN_GROUP
mailman:
driver = pipe
command = MAILMAN_WRAP '${if def:local_part_suffix {${sg{$local_part_suffix}{-(\\w+)(\\+.*)?}{\$1}}} {post}}' $local_part
current_directory = MAILMAN_HOME
home_directory = MAILMAN_HOME
user = MAILMAN_USER
group = MAILMAN_GROUP
.endif
.ifdef SA_ENABLE
spamcheck:
debug_print = "T: spamassassin_pipe for $local_part@$domain"
driver = pipe
command = EXIMBIN -oMr spam-scanned -bS
use_bsmtp
transport_filter = SPAMCBIN
home_directory = "/tmp"
current_directory = "/tmp"
user = mailnull
group = mail
return_fail_output
message_prefix =
message_suffix =
.endif
begin retry
* * F,2h,15m; G,16h,1h,1.5; F,4d,6h
begin rewrite
.ifdef MAILMAN_ENABLE
\N^(.*<)?([^<]*)@([^>]*).*$\N "${if exists{MAILMAN_HOME/lists/${sg{$2}{-$3.*}{-$3}}/config.pck} {${sg{$0} {-$3} {}}} {$0} }" S
\N^(.*<)?([^<]*)@([^>]*).*$\N "${if exists{MAILMAN_HOME/lists/${sg{$2}{-$3.*}{-$3}}/config.pck} {${sg{$0} {-$3} {}}} {$0} }"
.endif
begin authenticators
cram:
driver = cram_md5
public_name = CRAM-MD5
server_secret = ${extract {6} {:} {${lookup{$1}lsearch{/usr/local/etc/exim/passwd}}}}
server_set_id = $1
plain:
driver = plaintext
public_name = PLAIN
server_prompts = :
server_condition = ${if and{{!eq{$3}{}} {eq {$3} {${extract {6} {:} {${lookup{$2}lsearch{/usr/local/etc/exim/passwd}}}}}}} {yes} {no} }
server_set_id = $2
login:
driver = plaintext
public_name = LOGIN
server_prompts = "Username:: : Password::"
server_condition = ${if and{{!eq{$2}{}} {eq {$2} {${extract {6} {:} {${lookup{$1}lsearch{/usr/local/etc/exim/passwd}}}}}}} {yes} {no} }
server_set_id = $1
yarnik
-
ASY
- мл. сержант
- Сообщения: 130
- Зарегистрирован: 2011-02-21 12:50:03
Непрочитанное сообщение
ASY » 2011-06-24 17:12:49
У меня этот скрипт нормально отработал. Но sendmail у меня настоящий... Судя по логу, тут Postfix ?
Кстати, чем чёрт не шутит... Может так сделать : open (MAIL, "|/usr/sbin/sendmail -t -i -f <$rmail>") ?
В смысле в "<>" E-Mail.
ASY
-
yarnik
- рядовой
- Сообщения: 12
- Зарегистрирован: 2011-06-17 17:51:37
Непрочитанное сообщение
yarnik » 2011-06-24 18:02:13
ребят, спасибо, все гораздо проще
Если "-f" не определена, или
определена пользователем, которому не доверяют, отправитель как
логин_пользователя@домен.по.умолчанию
источник
http://www.opennet.ru/base/net/exim_options.txt.html
Относительно доверенных/недоверенных пользователей, если кто не в курсе.
Пользователю root и пользователю exim'а (это не обязательно пользователь
exim) доверяют всегда. Остальных можно задать в конфиге директивами
"trusted_users" и "trusted_groups".
yarnik