LINUX.ORG.RU

История изменений

Исправление Dima_228, (текущая версия) :

Спасибо всем кто ответил. Предлагаю обсуждать не шизу а возможные методы реализации. Я сам против таких вещей, но в данный момент надо на почте в одном домене сделать прямую аналогию того что реализовали госорганы (в частности судебная система) РФ - блок по домену.

По IP адресу или GEO мне не подходит. Нужно завайтлистить несколько доменов (корпоративных) заблокировав все остальные, либо наоборот заблеклистить несколько доменов. Как будет эффективнее мы еще сами не понимаем.

Я уже думал над тем чтобы поднять свой локальный spamhaus на уровне dns

  deny    message       = Rejected because $sender_host_address is in a black list at $dnslist_domain\n$dnslist_text
          hosts         = !+whitelist
          dnslists      = ${readfile {/etc/exim4/dnsbl.conf}{:}}

но пока не понимаю где здесь указано что по хостам dnsbl.conf опрашивается IP адрес ($sender_host_address) а не домен отправителя. Видимо можно проще.

begin acl

acl_check_spammers:
  accept  hosts         = +whitelist

  drop    message       = Your host in blacklist on this server.
          log_message   = Host in blacklist
          hosts         = +spammers

  accept

acl_check_mail:	
  deny    condition     = ${if eq{$sender_helo_name}{}}
          message       = HELO is required

  drop    message       = Helo name contains a ip address (HELO was $sender_helo_name) and not is valid
          condition     = ${if match{$sender_helo_name}{\N((\d{1,3}[.-]\d{1,3}[.-]\d{1,3}[.-]\d{1,3})|([0-9a-f]{8})|([0-9A-F]{8}))\N}{yes}{no}}
          condition     = ${if match {${lookup dnsdb{>: defer_never,ptr=$sender_host_address}}\}{$sender_helo_name}{no}{yes}}
          delay         = 45s

  drop    condition     = ${if isip{$sender_helo_name}}
          message       = Access denied - Invalid HELO name (See RFC2821 4.1.3)

  drop    condition     = ${if eq{[$interface_address]}{$sender_helo_name}}
          message       = $interface_address is _my_ address

  accept authenticated = *

  deny    spf           = fail : softfail
	  message	= SPF validation failed: $sender_host_address is not allowed to send mail from ${if def:sender_address_domain{$sender_address_domain}{$sender_helo_name}}
	  log_message	= SPF validation failed ${if eq{$spf_result}{softfail}{ (softfail)}{}}: $sender_host_address is not allowed to send mail from ${if def:sender_address_domain{$sender_address_domain}{$sender_helo_name}}

  deny	  spf		= permerror
	  message	= SPF validation failed: syntax error in SPF record(s) for ${if def:sender_address_domain{$sender_address_domain}{$sender_helo_name}}
	  log_message	= SPF validation failed (permerror): syntax error in SPF record(s) for ${if def:sender_address_domain{$sender_address_domain}{$sender_helo_name}}

  defer	  spf		= temperror
	  message	= temporary error during SPF validation; please try again later
	  log_message	= SPF validation failed temporary; deferred

  warn	  spf		= none : neutral
	  log_message	= SPF validation none/neutral

  warn	  condition	= ${if eq{$sender_host_name}{} {1}}
	  set acl_m_greylistreasons = Host $sender_host_address lacks reverse DNS\n$acl_m_greylistreasons

  accept
	  add_header = :at_start:$spf_received
	  logwrite = SPF validation passed


Я могу сюда просто добавить новый блок с названием acl_some_name: и он будет выполняться? Или для этого его как-то прописать надо в самом начале конфига

acl_smtp_connect = acl_check_spammers
acl_smtp_mail = acl_check_mail
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data
acl_smtp_mime = acl_check_mime

?

Помогите кто-то с правилом, допустим, заблокировать всю почту с домена gmail.com или разрешить всю почту с любого домена заканчивающегося на .ru

Это реально сделать на уровне одного ящика или одного домена, или будет касаться всех кто использует данный Exim сервер?

И еще как вариант чтобы почта принималась в папку СПАМ но отправителю уходил Delivery report о том что письмо не принято по причине sender is blocked - это реально?

Исправление Dima_228, :

Спасибо всем кто ответил. Предлагаю обсуждать не шизу а возможные методы реализации. Я сам против таких вещей, но в данный момент надо на почте в одном домене сделать прямую аналогию того что реализовали госорганы (в частности судебная система) РФ - блок по домену.

По IP адресу или GEO мне не подходит. Нужно завайтлистить несколько доменов (корпоративных) заблокировав все остальные, либо наоборот заблеклистить несколько доменов. Как будет эффективнее мы еще сами не понимаем.

Я уже думал над тем чтобы поднять свой локальный spamhaus на уровне dns

  deny    message       = Rejected because $sender_host_address is in a black list at $dnslist_domain\n$dnslist_text
          hosts         = !+whitelist
          dnslists      = ${readfile {/etc/exim4/dnsbl.conf}{:}}

но пока не понимаю где здесь указано что по хостам dnsbl.conf опрашивается IP адрес ($sender_host_address) а не домен отправителя. Видимо можно проще.

begin acl

acl_check_spammers:
  accept  hosts         = +whitelist

  drop    message       = Your host in blacklist on this server.
          log_message   = Host in blacklist
          hosts         = +spammers

  accept

acl_check_mail:	
  deny    condition     = ${if eq{$sender_helo_name}{}}
          message       = HELO is required

  drop    message       = Helo name contains a ip address (HELO was $sender_helo_name) and not is valid
          condition     = ${if match{$sender_helo_name}{\N((\d{1,3}[.-]\d{1,3}[.-]\d{1,3}[.-]\d{1,3})|([0-9a-f]{8})|([0-9A-F]{8}))\N}{yes}{no}}
          condition     = ${if match {${lookup dnsdb{>: defer_never,ptr=$sender_host_address}}\}{$sender_helo_name}{no}{yes}}
          delay         = 45s

  drop    condition     = ${if isip{$sender_helo_name}}
          message       = Access denied - Invalid HELO name (See RFC2821 4.1.3)

  drop    condition     = ${if eq{[$interface_address]}{$sender_helo_name}}
          message       = $interface_address is _my_ address

  accept authenticated = *

  deny    spf           = fail : softfail
	  message	= SPF validation failed: $sender_host_address is not allowed to send mail from ${if def:sender_address_domain{$sender_address_domain}{$sender_helo_name}}
	  log_message	= SPF validation failed ${if eq{$spf_result}{softfail}{ (softfail)}{}}: $sender_host_address is not allowed to send mail from ${if def:sender_address_domain{$sender_address_domain}{$sender_helo_name}}

  deny	  spf		= permerror
	  message	= SPF validation failed: syntax error in SPF record(s) for ${if def:sender_address_domain{$sender_address_domain}{$sender_helo_name}}
	  log_message	= SPF validation failed (permerror): syntax error in SPF record(s) for ${if def:sender_address_domain{$sender_address_domain}{$sender_helo_name}}

  defer	  spf		= temperror
	  message	= temporary error during SPF validation; please try again later
	  log_message	= SPF validation failed temporary; deferred

  warn	  spf		= none : neutral
	  log_message	= SPF validation none/neutral

  warn	  condition	= ${if eq{$sender_host_name}{} {1}}
	  set acl_m_greylistreasons = Host $sender_host_address lacks reverse DNS\n$acl_m_greylistreasons

  accept
	  add_header = :at_start:$spf_received
	  logwrite = SPF validation passed


Я могу сюда просто добавить новый блок с названием acl_some_name: и он будет выполняться? Или для этого его как-то прописать надо в самом начале конфига

acl_smtp_connect = acl_check_spammers
acl_smtp_mail = acl_check_mail
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data
acl_smtp_mime = acl_check_mime

?

Помогите кто-то с правилом, допустим, заблокировать всю почту с домена gmail.com или разрешить всю почту с любого домена заканчивающегося на .ru

И еще как вариант чтобы почта принималась в папку СПАМ но отправителю уходил Delivery report о том что письмо не принято по причине sender is blocked - это реально?

Исходная версия Dima_228, :

Спасибо всем кто ответил. Предлагаю обсуждать не шизу а возможные методы реализации. Я сам против таких вещей, но в данный момент надо на почте в одном домене сделать прямую аналогию того что реализовали госорганы (в частности судебная система) РФ - блок по домену.

По IP адресу или GEO мне не подходит. Нужно завайтлистить несколько доменов (корпоративных) заблокировав все остальные, либо наоборот заблеклистить несколько доменов. Как будет эффективнее мы еще сами не понимаем.

Я уже думал над тем чтобы поднять свой локальный spamhaus на уровне dns

  deny    message       = Rejected because $sender_host_address is in a black list at $dnslist_domain\n$dnslist_text
          hosts         = !+whitelist
          dnslists      = ${readfile {/etc/exim4/dnsbl.conf}{:}}

но пока не понимаю где здесь указано что по хостам dnsbl.conf опрашивается IP адрес ($sender_host_address) а не домен отправителя. Видимо можно проще.

begin acl

acl_check_spammers:
  accept  hosts         = +whitelist

  drop    message       = Your host in blacklist on this server.
          log_message   = Host in blacklist
          hosts         = +spammers

  accept

acl_check_mail:	
  deny    condition     = ${if eq{$sender_helo_name}{}}
          message       = HELO is required

  drop    message       = Helo name contains a ip address (HELO was $sender_helo_name) and not is valid
          condition     = ${if match{$sender_helo_name}{\N((\d{1,3}[.-]\d{1,3}[.-]\d{1,3}[.-]\d{1,3})|([0-9a-f]{8})|([0-9A-F]{8}))\N}{yes}{no}}
          condition     = ${if match {${lookup dnsdb{>: defer_never,ptr=$sender_host_address}}\}{$sender_helo_name}{no}{yes}}
          delay         = 45s

  drop    condition     = ${if isip{$sender_helo_name}}
          message       = Access denied - Invalid HELO name (See RFC2821 4.1.3)

  drop    condition     = ${if eq{[$interface_address]}{$sender_helo_name}}
          message       = $interface_address is _my_ address

  accept authenticated = *

  deny    spf           = fail : softfail
	  message	= SPF validation failed: $sender_host_address is not allowed to send mail from ${if def:sender_address_domain{$sender_address_domain}{$sender_helo_name}}
	  log_message	= SPF validation failed ${if eq{$spf_result}{softfail}{ (softfail)}{}}: $sender_host_address is not allowed to send mail from ${if def:sender_address_domain{$sender_address_domain}{$sender_helo_name}}

  deny	  spf		= permerror
	  message	= SPF validation failed: syntax error in SPF record(s) for ${if def:sender_address_domain{$sender_address_domain}{$sender_helo_name}}
	  log_message	= SPF validation failed (permerror): syntax error in SPF record(s) for ${if def:sender_address_domain{$sender_address_domain}{$sender_helo_name}}

  defer	  spf		= temperror
	  message	= temporary error during SPF validation; please try again later
	  log_message	= SPF validation failed temporary; deferred

  warn	  spf		= none : neutral
	  log_message	= SPF validation none/neutral

  warn	  condition	= ${if eq{$sender_host_name}{} {1}}
	  set acl_m_greylistreasons = Host $sender_host_address lacks reverse DNS\n$acl_m_greylistreasons

  accept
	  add_header = :at_start:$spf_received
	  logwrite = SPF validation passed


Я могу сюда просто добавить новый блок с названием acl_some_name: и он будет выполняться? Или для этого его как-то прописать надо в самом начале конфига

acl_smtp_connect = acl_check_spammers
acl_smtp_mail = acl_check_mail
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data
acl_smtp_mime = acl_check_mime

?

Помогите кто-то с правилом, допустим, заблокировать всю почту с домена gmail.com или разрешить всю почту с любого домена заканчивающегося на .ru