EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты
	Модератор: xM
	
		
					Правила форума
			Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
		
		
	 
	
			
		
		
		
			- 
				
								Midnight-cat							
 
						- проходил мимо
 			
		- Сообщения: 6
 		- Зарегистрирован: 2008-01-15 11:38:48
 		
		
											- Откуда: Украина
 
							
						
		
		
						
						
													
							
						
									
						Непрочитанное сообщение
					
								 Midnight-cat » 2008-01-21 13:48:11
			
			
			
			
			У меня не работают все ниже написанные acl, ошибок в логах никаких нет, просто молча не работает и все тут. Задержек нет, письма моментально доходят, на цифры в HELO тоже ни разу не ругался.
Проверяла на рабочей связке Exim+KAV+Spamassasin. Потом специально поставила с нуля тестовый exim 4.69 без довесков, на нем тоже не работает.  OS Slackware 10.0
acl следующие:
Код: Выделить всё
 deny    message       = "Не надо пихать свой IP в качестве HELO!"
          hosts         =  *:!+relay_from_hosts
          condition     = ${if eq{$sender_helo_name}\
                          {$sender_host_address}{true}{false}}
deny    condition     = ${if match{$sender_helo_name}\
                          {\N^\d+$\N}{yes}{no}}
          hosts         = !127.0.0.1:!localhost:*
          message       = "В HELO не могут быть тока цифры!"
 warn
        # ставим дефолтовую задержку в 20 секунд
        set acl_m0 = 20s
 
			
													
					Последний раз редактировалось 
Alex Keda 2008-01-21 13:57:43, всего редактировалось 1 раз.
					
Причина: Та заипали слепые, кнопки кода не видящие =)				 
			
									
						 
		 
				
		
		 
	 
	
	Midnight-cat
 
                	
		
			
			
				
				
			
			
				- 
					
					Хостинг 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/
				 
			 
						
						 
		 
	 
	 
	
		
	
		
		
		
			- 
				
								dikens3							
 
						- подполковник
 			
		- Сообщения: 4856
 		- Зарегистрирован: 2006-09-06 16:24:08
 		
		
																- Откуда: Нижний Новгород
 
							
							- 
				Контактная информация:
				
			
 
				
		
		
						
						
													
							
						
									
						Непрочитанное сообщение
					
								 dikens3 » 2008-01-21 14:57:12
			
			
			
			
			Код: Выделить всё
#!/bin/sh
# Тестирование от mail.ru
#(echo "EHLO mxs.mail.ru"; echo "MAIL FROM:user@mail.ru"; echo "RCPT TO: postmaster@ТВОЙ_ДОМЕН.ru"; echo "DATA"; echo "Subject: test"; echo "."; echo "QUIT";) \
#| exim -d -bhc 194.67.23.20 > testlog 2>&1
И смотри что там в логах по твоей теме.
Должно быть примерно следующее.
Код: Выделить всё
processing "deny"
check !senders = :
address match: subject=user@mail.ru pattern=
mail.ru in ""? no (end of list)
user@mail.ru in ":"? no (end of list)
check condition = ${if eq{$sender_helo_name}{}{yes}{no}}
                = no
deny: condition test failed
 
			
									
									Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
						 
		 
				
		
		 
	 
	
	dikens3
 
                	
	
		
		
		
			- 
				
								Midnight-cat							
 
						- проходил мимо
 			
		- Сообщения: 6
 		- Зарегистрирован: 2008-01-15 11:38:48
 		
		
											- Откуда: Украина
 
							
						
		
		
						
						
													
							
						
									
						Непрочитанное сообщение
					
								 Midnight-cat » 2008-01-21 15:35:57
			
			
			
			
			Вот  что в выводе:
Код: Выделить всё
require: condition test succeeded
processing "warn"
check set acl_m0 = 40s
warn: condition test succeeded
processing "deny"
deny: condition test succeeded
SMTP>> 550 "Free"
LOG: MAIN REJECT
  H=mxs.mail.ru [194.67.23.20] F=<user@mail.ru> rejected RCPT admin@domen.ua: "Free"
SMTP<< DATA
SMTP>> 503-All RCPT commands were rejected with this error:
SMTP>> 503-"Free"
SMTP>> 503 Valid RCPT command must precede DATA
SMTP<< Subject: test
LOG: smtp_syntax_error MAIN
  SMTP syntax error in "Subject: test" H=mxs.mail.ru [194.67.23.20] unrecognized command
SMTP>> 500 unrecognized command
SMTP<< .
LOG: smtp_syntax_error MAIN
  SMTP syntax error in "." H=mxs.mail.ru [194.67.23.20] unrecognized command
SMTP>> 500 unrecognized command
SMTP<< QUIT
SMTP>> 221 domen.ua closing connection
LOG: smtp_connection MAIN
  SMTP connection from mxs.mail.ru [194.67.23.20] closed by QUIT
search_tidyup called
>>>>>>>>>>>>>>>> Exim pid=24196 terminating with rc=0 >>>>>>>>>>>>>>>>
250-domen.ua Hello mxs.mail.ru [194.67.23.20]
250-SIZE 17825792
250-PIPELINING
250 HELP
250 OK
550 "Free"
503-All RCPT commands were rejected with this error:
503-"Free"
503 Valid RCPT command must precede DATA
500 unrecognized command
500 unrecognized command
221 domen.ua closing connection
 
			
									
									
						 
		 
				
		
		 
	 
	
	Midnight-cat
 
                	
	
		
		
		
			- 
				
								dikens3							
 
						- подполковник
 			
		- Сообщения: 4856
 		- Зарегистрирован: 2006-09-06 16:24:08
 		
		
																- Откуда: Нижний Новгород
 
							
							- 
				Контактная информация:
				
			
 
				
		
		
						
						
													
							
						
									
						Непрочитанное сообщение
					
								 dikens3 » 2008-01-21 16:16:56
			
			
			
			
			Это что за фильтр, который выдаёт это сообщение?
И это самое, что за фильтр такой из одной команды 
deny?
processing "deny"
deny: condition test succeeded
 
			
									
									Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
						 
		 
				
		
		 
	 
	
	dikens3
 
                	
	
		
		
		
			- 
				
								Midnight-cat							
 
						- проходил мимо
 			
		- Сообщения: 6
 		- Зарегистрирован: 2008-01-15 11:38:48
 		
		
											- Откуда: Украина
 
							
						
		
		
						
						
													
							
						
									
						Непрочитанное сообщение
					
								 Midnight-cat » 2008-01-21 16:46:43
			
			
			
			
			Ошибочка вышла, забыла убрать всякие тестовые фильтры, но суть это не меняет, асл все равно не ходит, хотя логи поменялись:
Код: Выделить всё
using ACL "acl_check_rcpt"
processing "accept"
check hosts = :
host in ":"? no (end of list)
accept: condition test failed
processing "deny"
check domains = +local_domains
domen.ua in "domen.ua"? yes (matched "domen.ua")
domen.ua in "+local_domains"? yes (matched "+local_domains")
check local_parts = ^[.] : ^.*[@%!/|]
admin in "^[.] : ^.*[@%!/|]"? no (end of list)
deny: condition test failed
processing "deny"
check domains = !+local_domains
cached yes match for +local_domains
cached lookup data = NULL
domen.ua in "!+local_domains"? no (matched "!+local_domains" - cached)
deny: condition test failed
processing "accept"
check local_parts = postmaster
admin in "postmaster"? no (end of list)
accept: condition test failed
processing "deny"
check hosts = *:!+relay_from_hosts
host in "*:!+relay_from_hosts"? yes (matched "*")
check condition = ${if eq{$sender_helo_name}{$sender_host_address}{true}{false}}
                = false
deny: condition test failed
processing "warn"
check set acl_m0 = 140s
warn: condition test succeeded
processing "require"
check verify = sender
 
			
									
									
						 
		 
				
		
		 
	 
	
	Midnight-cat
 
                	
	
		
		
		
			- 
				
								dikens3							
 
						- подполковник
 			
		- Сообщения: 4856
 		- Зарегистрирован: 2006-09-06 16:24:08
 		
		
																- Откуда: Нижний Новгород
 
							
							- 
				Контактная информация:
				
			
 
				
		
		
						
						
													
							
						
									
						Непрочитанное сообщение
					
								 dikens3 » 2008-01-21 17:40:12
			
			
			
			
			check condition = ${if eq{$sender_helo_name}{$sender_host_address}{true}{false}}
                = false
Ну 2-е переменные не совпадают, что тут не так?
К примеру можно записать эти переменные в читабельном виде используя logwrite (К примеру в panic).
deny    message       = "Не надо пихать свой IP в качестве HELO!"
          hosts         =  *:!+relay_from_hosts
          logwrite      = :panic:"HELO=$sender_helo_name, HOST=$sender_host_address"
          condition     = ${if eq{$sender_helo_name}\
                          {$sender_host_address}{true}{false}}
 
			
									
									Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
						 
		 
				
		
		 
	 
	
	dikens3
 
                	
	
		
		
		
			- 
				
								Midnight-cat							
 
						- проходил мимо
 			
		- Сообщения: 6
 		- Зарегистрирован: 2008-01-15 11:38:48
 		
		
											- Откуда: Украина
 
							
						
		
		
						
						
													
							
						
									
						Непрочитанное сообщение
					
								 Midnight-cat » 2008-01-21 18:02:09
			
			
			
			
			dikens3 писал(а):check condition = ${if eq{$sender_helo_name}{$sender_host_address}{true}{false}}
                = false
Ну 2-е переменные не совпадают, что тут не так?
 
Так после несовпадения должна быть реакция в виде отбрасывания таких писем, или для этого еще что-то надо дописать?
Вот это значит, что тест провален и дальше пропускает письмо.
И почему задержка по времени не работает, непонятно.
Код: Выделить всё
check set acl_m0 = 140s
warn: condition test succeeded
Т.е. все прекрасно, тест пройден, а задержка по времени где?
 
			
									
									
						 
		 
				
		
		 
	 
	
	Midnight-cat
 
                	
	
		
		
		
			- 
				
								dikens3							
 
						- подполковник
 			
		- Сообщения: 4856
 		- Зарегистрирован: 2006-09-06 16:24:08
 		
		
																- Откуда: Нижний Новгород
 
							
							- 
				Контактная информация:
				
			
 
				
		
		
						
						
													
							
						
									
						Непрочитанное сообщение
					
								 dikens3 » 2008-01-22 0:34:22
			
			
			
			
			Так после несовпадения должна быть реакция в виде отбрасывания таких писем, или для этого еще что-то надо дописать?
deny: condition test failed
Непонимание работы ACL. (*читать 
тут )
accept, deny, warn и т.п. - действие 
при выполнении всех перечисленных условий!!!
Код: Выделить всё
deny
      Чё-то там
      Чё-то там
      check condition = ${if eq{$sender_helo_name}{$sender_host_address}{true}{false}}
      = false
Как думаешь все условия выполнены или же последнее НЕвыполнено?
check set acl_m0 = 140s
warn: condition test succeeded
Т.е. все прекрасно, тест пройден, а задержка по времени где?
Во время тестирования задержка не работает.
И пишется правильно так:
А в твоём случае переменной m0 присвоено значение 140s - и всё. :-)
 
			
									
									Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
						 
		 
				
		
		 
	 
	
	dikens3
 
                	
	
		
		
		
			- 
				
								Midnight-cat							
 
						- проходил мимо
 			
		- Сообщения: 6
 		- Зарегистрирован: 2008-01-15 11:38:48
 		
		
											- Откуда: Украина
 
							
						
		
		
						
						
													
							
						
									
						Непрочитанное сообщение
					
								 Midnight-cat » 2008-01-22 11:38:36
			
			
			
			
			Поняла, где ошибка с задержкой. Я эту строчку вообще забыла дописать.
Про acl уже читаю. Как всегда, проблема собственной невнимательности и криворукости  
 
Спасибо большое за подсказки!
 
			
									
									
						 
		 
				
		
		 
	 
	
	Midnight-cat
 
                	
	
		
		
		
			- 
				
								Alex Keda							
 
						- стреляли...
 			
		- Сообщения: 35477
 		- Зарегистрирован: 2004-10-18 14:25:19
 		
		
																					- Откуда: Made in USSR
 
							
							- 
				Контактная информация:
				
			
 
				
		
		
						
						
													
							
						
									
						Непрочитанное сообщение
					
								 Alex Keda » 2008-01-22 11:55:40
			
			
			
			
			Midnight-cat писал(а):Поняла, где ошибка с задержкой. Я эту строчку вообще забыла дописать.
ники нынче абстрактные...
тока по тексту и догадаешься кто какого пола 

 
			
									
									Убей их всех! Бог потом рассортирует...
						 
		 
				
		
		 
	 
	
	Alex Keda