dnl dnl Проверка поля Message-Id dnl dnl NO - не проводить проверку dnl EMPTY:WARN - вывода в лог файл предупреждения dnl при пустом Message-Id dnl EMPTY:REJECT - возврата клиенту кода 5xx dnl при пустом Message-Id dnl OWN:WARN - вывода в лог файл предупреждения, dnl если Message-Id содержит $qualify_domain dnl или message_id_header_domain dnl OWN:REJECT - возврата клиенту кода 5xx, dnl если Message-Id содержит $qualify_domain dnl или message_id_header_domain dnl LOCAL:WARN - вывода в лог файл предупреждения, dnl если Message-Id содержит локальный домен dnl LOCAL:REJECT - возврата клиенту кода 5xx, dnl если Message-Id содержит локальный домен dnl define(`confCHECK_MESSAGE_ID', `WARN')dnl dnl несколько значений могут быть указаны через пробел dnl define(`confCHECK_MESSAGE_ID', `EMPTY:REJECT OWN:REJECT LOCAL:WARN')dnl dnl значение `WARN' приравнивается к dnl `EMPTY:WARN OWN:WARN LOCAL:WARN' dnl значение `REJECT' приравнивается к dnl `EMPTY:REJECT OWN:REJECT LOCAL:REJECT' ifelse(confCHECK_MESSAGE_ID, `WARN', ` define(`confCHECK_MESSAGE_ID', `EMPTY:WARN OWN:WARN LOCAL:WARN') ') ifelse(confCHECK_MESSAGE_ID, `REJECT', ` define(`confCHECK_MESSAGE_ID', `EMPTY:REJECT OWN:REJECT LOCAL:REJECT') ') ifelse_strstr(confCHECK_MESSAGE_ID, `EMPTY:WARN', `dnl # если поле Message-Id пустое warn ! hosts = +relay_from_hosts ! authenticated = * condition = ${if eq{$acl_m9}{white_list_relays}{no}{yes}} condition = ${if or{\ {eq{$h_Message-Id:}{}}\ {eq{$h_Message-Id:}{<>}}\ }{yes}{no}} log_message = Message-Id header field is empty message = X-Warn-Message-Id: Message-Id header field is empty ') ifelse_strstr(confCHECK_MESSAGE_ID, `OWN:WARN', `dnl # если в поле Message-Id использован локальный домен warn ! hosts = +relay_from_hosts ! authenticated = * condition = ${if eq{$acl_m9}{white_list_relays}{no}{yes}} condition = ${if match{$h_Message-Id:}\ {\N\<.+(\N@$qualify_domain|@confMESSAGE_ID_HEADER_DOMAIN\N)\>$\N}\ {yes}{no}} condition = ${if eq{$h_List-Id:}{}{yes}{\ ${if match{$h_From:}{\N^[^@]+@([^>]+)\N}{\ ${if match_domain{$1}\ {$primary_hostname:$qualify_domain:+local_domains}\ {no}{yes}}\ }{yes}}\ }} log_message = Message-Id header field contains local domain ($h_Message-Id:) message = X-Warn-Message-Id: Message-Id contains local domain ') ifelse_strstr(confCHECK_MESSAGE_ID, `LOCAL:WARN', `dnl # если поле Message-Id использован локальный домен из адреса получателя warn ! hosts = +relay_from_hosts ! authenticated = * condition = ${if eq{$acl_m9}{white_list_relays}{no}{yes}} condition = ${if match\ {$h_Message-Id:\t$recipients}\ {\N<[^@]+@([^>]+)>\t.+@\1(, .+)?$\N}\ {yes}{no}} condition = ${if match{$h_Message-Id:}{\N<[^@]+@([^>]+)>\N}\ {\ ${if match_domain{$1}\ {$primary_hostname:$qualify_domain:+local_domains}\ {yes}{no}}\ }{no}} condition = ${if eq{$h_List-Id:}{}{yes}{\ ${if match{$h_From:}{\N^[^@]+@([^>]+)\N}{\ ${if match_domain{$1}\ {$primary_hostname:$qualify_domain:+local_domains}\ {no}{yes}}\ }{yes}}\ }} log_message = Message-Id header field contains local domain ($h_Message-Id:) message = X-Warn-Message-Id: Message-Id contains local domain ') ifelse_strstr(confCHECK_MESSAGE_ID, `EMPTY:REJECT', `dnl # если поле Message-Id пустое deny ! hosts = +relay_from_hosts ! authenticated = * condition = ${if eq{$acl_m9}{white_list_relays}{no}{yes}} condition = ${if or{\ {eq{$h_Message-Id:}{}}\ {eq{$h_Message-Id:}{<>}}\ }{yes}{no}} message = Message-Id header field is empty (${message_id}) logwrite = original recipients: $recipients ') ifelse_strstr(confCHECK_MESSAGE_ID, `OWN:REJECT', `dnl # если поле Message-Id использован локальный домен deny ! hosts = +relay_from_hosts ! authenticated = * condition = ${if eq{$acl_m9}{white_list_relays}{no}{yes}} condition = ${if match{$h_Message-Id:}\ {\N\<.+(\N@$qualify_domain|@confMESSAGE_ID_HEADER_DOMAIN\N)\>$\N}\ {yes}{no}} condition = ${if eq{$h_List-Id:}{}{yes}{\ ${if match{$h_From:}{\N^[^@]+@([^>]+)\N}{\ ${if match_domain{$1}\ {$primary_hostname:$qualify_domain:+local_domains}\ {no}{yes}}\ }{yes}}\ }} log_message = Message-Id header field contains local domain ($h_Message-Id:) message = Message-Id header field contains local domain (${message_id}) logwrite = original recipients: $recipients ') ifelse_strstr(confCHECK_MESSAGE_ID, `LOCAL:REJECT', `dnl # если поле Message-Id использован локальный домен из адреса получателя deny ! hosts = +relay_from_hosts ! authenticated = * condition = ${if eq{$acl_m9}{white_list_relays}{no}{yes}} condition = ${if match\ {$h_Message-Id:\t$recipients}\ {\N<[^@]+@([^>]+)>\t.+@\1(, .+)?$\N}\ {yes}{no}} condition = ${if match{$h_Message-Id:}{\N<[^@]+@([^>]+)>\N}\ {\ ${if match_domain{$1}\ {$primary_hostname:$qualify_domain:+local_domains}\ {yes}{no}}\ }{no}} condition = ${if eq{$h_List-Id:}{}{yes}{\ ${if match{$h_From:}{\N^[^@]+@([^>]+)\N}{\ ${if match_domain{$1}\ {$primary_hostname:$qualify_domain:+local_domains}\ {no}{yes}}\ }{yes}}\ }} log_message = Message-Id header field contains local domain ($h_Message-Id:) message = Message-Id header field contains local domain (${message_id}) logwrite = original recipients: $recipients ')