проблема с почтой

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

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.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
Откуда: Минск
Контактная информация:

Re: проблема с почтой

Непрочитанное сообщение Electronik » 2011-06-17 18:59:03

Код: Выделить всё

print MAIL "Reply To: $rmail\n";
Предскажем будущее hw по логам и дампу, снимем сглаз и порчу с рута, поможем придумать пароль(С)
Блог

yarnik
рядовой
Сообщения: 12
Зарегистрирован: 2011-06-17 17:51:37

Re: проблема с почтой

Непрочитанное сообщение 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

Аватара пользователя
Electronik
капитан
Сообщения: 1593
Зарегистрирован: 2008-11-15 17:32:56
Откуда: Минск
Контактная информация:

Re: проблема с почтой

Непрочитанное сообщение Electronik » 2011-06-17 22:21:43

что за скрипт, что отправляете,от какого пользователя, и случаем не через веб-интерфейс?
Предскажем будущее hw по логам и дампу, снимем сглаз и порчу с рута, поможем придумать пароль(С)
Блог

yarnik
рядовой
Сообщения: 12
Зарегистрирован: 2011-06-17 17:51:37

Re: проблема с почтой

Непрочитанное сообщение yarnik » 2011-06-17 23:26:19

Перл, сам скрипт предоставил в первом посте.
заливаю на сервер, логин юзера как раз "admin"
запускаю скрипт по http.
все.

Аватара пользователя
Electronik
капитан
Сообщения: 1593
Зарегистрирован: 2008-11-15 17:32:56
Откуда: Минск
Контактная информация:

Re: проблема с почтой

Непрочитанное сообщение 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 по логам и дампу, снимем сглаз и порчу с рута, поможем придумать пароль(С)
Блог

yarnik
рядовой
Сообщения: 12
Зарегистрирован: 2011-06-17 17:51:37

Re: проблема с почтой

Непрочитанное сообщение 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


ASY
мл. сержант
Сообщения: 130
Зарегистрирован: 2011-02-21 12:50:03

Re: проблема с почтой

Непрочитанное сообщение ASY » 2011-06-24 17:12:49

У меня этот скрипт нормально отработал. Но sendmail у меня настоящий... Судя по логу, тут Postfix ?
Кстати, чем чёрт не шутит... Может так сделать : open (MAIL, "|/usr/sbin/sendmail -t -i -f <$rmail>") ?
В смысле в "<>" E-Mail.

yarnik
рядовой
Сообщения: 12
Зарегистрирован: 2011-06-17 17:51:37

Re: проблема с почтой

Непрочитанное сообщение 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".