рдлреНрд░рдВрдЯ-рдПрдВрдб GLD рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреЛрд╕реНрдЯрдлрд╝рд┐рдХреНрд╕ рдмрд╛рд╣рд░реА рдПрдХреНрд╕реЗрд╕ рдирд┐рдпрдо

рдРрд╕рд╛ рд╣реБрдЖ рдХрд┐ рдЬрд┐рд╕ рд╕рдВрдЧрдарди рдореЗрдВ рдореИрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ, рд╡рд╣рд╛рдВ рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдореЗрд▓ рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ, рд╕реНрдкреИрдо рдФрд░ рд╡рд╛рдпрд░рд╕ рд╕реНрдкреИрдорд╛рд╕рд╕рд┐рди, рдЕрдорд╛рд╡рд┐рд╕реНрдб-рдиреНрдпреВ рдФрд░ рдХреНрд▓реИрдорд╛рд╡ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрди рд╕рдмрдХреЗ рдЕрд▓рд╛рд╡рд╛, GLD рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд░рд┐рдпрд╛рд▓реА рд▓рд╛рдЧреВ рдХреА рдЬрд╛рддреА рд╣реИред рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, "рдЖрд╕рд╛рди" рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди рдПрдХ рдЦрд╛рдореА рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ - рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд▓рдЪреАрд▓рд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕реЗ рджреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ - рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рдПрд╕рдПрдордЯреАрдкреА рдПрдХреНрд╕реЗрд╕ рдкреЙрд▓рд┐рд╕реА рдбреЗрд▓рд┐рдЧреЗрд╢рди рдХреА рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рджреЗрдЦрд╛ред рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдорд╣рд╛рди рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдкрд░ рдмрд╣реБрдд рдХрдо рдЬрд╛рдирдХрд╛рд░реА рд╣реИред рдХреМрди GLD рдореЗрдВ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдкрдиреЗ рдЪреЗрдХ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдХреИрд╕реЗ рдЕрдкрдиреА рдкрд╕рдВрджреАрджрд╛ рдпрд╛ рд╕рд┐рд░реНрдл рдкрд░рд┐рдЪрд┐рдд рднрд╛рд╖рд╛рдУрдВ рдФрд░ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреЛрд╕реНрдЯрдлрд╝рд┐рдХреНрд╕ рдореЗрдВ "рдмрд╛рд╣рд░реА" рдирд┐рдпрдореЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП - рдХреГрдкрдпрд╛, рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗред


рдкреГрд╖реНрдарднреВрдорд┐


рдпрд╣ рд╕рдм рдЗрд╕ рддрдереНрдп рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реБрдЖ рдХрд┐ рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдиреЗ рдПрдВрдЯреАрд╕реНрдкреИрдо рдлрд┐рд▓реНрдЯрд░ рдХреА рдЧрдВрднреАрд░рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рдФрд░ рдЕрдзрд┐рдХ рд╢рд┐рдХрд╛рдпрдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рднреА рдЪреЗрдХреЛрдВ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдорд╛рдВрдЧ рдХреА, рдпрд╣ рддрд░реНрдХ рджреЗрддреЗ рд╣реБрдП рдХрд┐ рд╡реЗ рд╕рднреА рд╕реНрдкреИрдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ рдмрд╕ рдПрдХ рднреА рдкрддреНрд░ рдирд╣реАрдВ рдЦреЛрдирд╛ рд╣реИред рд╣рдорд╛рд░рд╛ рд╡реНрдпрд╡рд╕рд╛рдп рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╣реИ, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдФрд░ рдпрд╣рд╛рдБ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ amavisd-new рдореЗрдВ рдЗрд╕реЗ рд╕рд░рд▓рддрд╛ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди GLD рдореЗрдВ рдРрд╕реА рдХреЛрдИ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рд╡рд╣рд╛рдБ рдПрдХ рд╢реНрд╡реЗрддрд╕реВрдЪреА рдореМрдЬреВрдж рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкреНрд░реЗрд╖рдХ рдХреЗ рдбреЗрдЯрд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЕрдЧрд░ рдореИрдВ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдкрддреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдЕрднреА рднреА рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЕрднреА рднреА рдПрдХ рд╢реНрд╡реЗрддрд╕реВрдЪреА рдХреЛ рдПрдХ рд╕реНрдерд╛рди рдкрд░ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдФрд░ рдПрдХ рд╕рд╛рде рджреЛ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛ред рдФрд░ рдХрд╛рд░реНрдп рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдЕрднреА рднреА рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рдФрд░ рдЬреАрдПрд▓рдбреА рдХреЗ рдмреАрдЪ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкрд░рдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рддрд╛рдХрд┐ рдореИрдВ рдЗрд╕рдореЗрдВ рд╡рд╣ рд╕рдм рдХреБрдЫ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХреВрдВ рдЬреЛ рдореИрдВ рдЪрд╛рд╣рддрд╛ рдерд╛ред

рд╕рд┐рджреНрдзрд╛рдВрдд


рдЬреАрдбреАрдПрд▓ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдиреЗрдЯрд╡рд░реНрдХ рд╕реЙрдХреЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, 2525 рдкреЛрд░реНрдЯ рдкрд░ рд╕реБрдирддрд╛ рд╣реИ) рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдореИрдВрдиреЗ check_policy_service рддрдВрддреНрд░ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рдФрд░ рдпрд╣реА рд╣реЛрддрд╛ рд╣реИред рдкреЛрд╕реНрдЯрдлрд╝рд┐рдХреНрд╕, рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрддреЗ рдкрд░ SMTP рд╕рддреНрд░ рдбреЗрдЯрд╛ рднреЗрдЬрддрд╛ рд╣реИред рдЕрдЧрд░ рдЖрдкрдХреЛ рдРрд╕рд╛ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рд╕реЙрдХреЗрдЯ рдкрд░ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдбреЗрдорди рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реИ, рддреЛ рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рдХреЗ рдкрд╛рд╕ рдПрдХ рдЙрдкрдХрд░рдг рд╣реИ - рд╕реНрдкреЙрди рдбреЗрдореЙрди, рдЬреЛ рдХрд┐ рдЖрдИрдЯреАрдбреА рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╡рд╣ рдЦреБрдж рдЖрд╡рд╢реНрдпрдХ рдХреБрд░реНрд╕рд┐рдпрд╛рдВ тАЛтАЛрд╕реБрдирддрд╛ рд╣реИ рдФрд░ рд╡рд╣ рд╕рдм рдХреБрдЫ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрд░рд┐рд╡рд╣рди рдХреЛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред

рдбреЗрдЯрд╛ рдореЗрдВ рдкреНрд░рд╛рд░реВрдк рдирд╛рдо = рдорд╛рди рд╣реИ , рдкреНрд░рддрд┐ рдкрдВрдХреНрддрд┐ рдПрдХ, рдбреЗрдЯрд╛ рдкреИрдХреЗрдЯ рдХреЗ рдЕрдВрдд рдХреЛ рдПрдХ рдЦрд╛рд▓реА рд░реЗрдЦрд╛ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрддреНрддрд░ рдореЗрдВ рдлреЙрд░реНрдо рдПрдХреНрд╢рди = рдорд╛рди рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕реЗ рдЦрд╛рд▓реА рд▓рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рднреА рдЕрдиреБрд╕рд░рдг рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрд╛рд░реНрд░рд╡рд╛рдИ рдкреЛрд╕реНрдЯрдлрд╝рд┐рдХреНрд╕ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП OK рдпрд╛ REJECT рджреЛрдиреЛрдВ рдорд╛рдирдХ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддреА рд╣реИ, рдФрд░ DUNNO рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЕрдиреНрдп рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рд╕рд╛рде рдЬрд╛рдВрдЪ рдЬрд╛рд░реА рд░рдЦрдирд╛, рдпрд╣ рдХрд╛рдо DEFER_IF_PERMIT рдХреБрдЫ рдкрд╛рда рджреНрд╡рд╛рд░рд╛ рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ... рдЬреЛ рдХреЛрдб 450 рдХреЗ рд╕рд╛рде рдкрддреНрд░ рдХреА рдЕрд╕реНрд╡реАрдХреГрддрд┐ рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрдЧрд╛ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреБрдЫ рдкрд╛рда ...
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдкрд░рд┐рд╡рд╣рди рдХреЗ рдПрд╕рдЯреАрдбреАрдЖрдИрдПрди рдкрд░ рдкреНрд░рд╛рдкреНрдд рдЖрдВрдХрдбрд╝реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:

Postfix version 2.1 and later: request=smtpd_access_policy protocol_state=RCPT protocol_name=SMTP helo_name=some.domain.tld queue_id=8045F2AB23 sender=foo@bar.tld recipient=bar@foo.tld recipient_count=0 client_address=1.2.3.4 client_name=another.domain.tld reverse_client_name=another.domain.tld instance=123.456.7 Postfix version 2.2 and later: sasl_method=plain sasl_username=you sasl_sender= size=12345 ccert_subject=solaris9.porcupine.org ccert_issuer=Wietse+20Venema ccert_fingerprint=C2:9D:F4:87:71:73:73:D9:18:E7:C2:F3:C1:DA:6E:04 Postfix version 2.3 and later: encryption_protocol=TLSv1/SSLv3 encryption_cipher=DHE-RSA-AES256-SHA encryption_keysize=256 etrn_domain= Postfix version 2.5 and later: stress= Postfix version 2.9 and later: ccert_pubkey_fingerprint=68:B3:29:DA:98:93:E3:40:99:C7:D8:AD:5C:B9:C9:40 [empty line] 


рд╡реНрдпрд╛рдкрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП


рдЗрд╕рд▓рд┐рдП, рд╣рдо рдПрдХ рдЯреВрд▓ рд╕реЗ рд▓реИрд╕ рд╣реИрдВред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВ рдкрд░реНрд▓ рд╕реЗ рдЕрдзрд┐рдХ рдкрд░рд┐рдЪрд┐рдд рд╣реВрдВред рдпрджрд┐ рдЖрдк рдкреНрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреА рдкрд░реНрд▓ рднрд╛рд╖рд╛ рдХреИрд╕реЗ рдкрдврд╝реЗрдВ рддреЛ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд╕рд╛рде рдЯреИрдм рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ greylist.pl рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреИрд╕рд╛ рдХрд┐ рдПрдХ рд╕рдХреНрд╖рдо рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрдВрдбреЗрдВрдЯ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдо рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝ рд░рд╣реЗ рд╣реИрдВред

рдкреЛрд╕реНрдЯрдлрд╝рд┐рдХреНрд╕

рд╕рдм рдХреБрдЫ рд╡рд╛рдЪрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рд▓реЗрдЦрдиред рдкрд╣рд▓реЗ, рдЕрдкрдиреЗ рдЕрдВрдд рдореЗрдВ рд╣рдорд╛рд░реЗ рдирдП рдкрд░рд┐рд╡рд╣рди рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП master.cf рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:

 # Greylist policy daemon filter gld unix - nn - 0 spawn user=nobody argv=/home/bender/scripts/gld.pl 

рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╡рд░рдг рд╣реИ, рдЗрд╕ рдкрд░рд┐рд╡рд╣рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо main.cf рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

 smtpd_recipient_restrictions = ... reject_unauth_destination, check_policy_service unix:private/gld gld_time_limit = 3600 

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ reject_unauth_destination рдЖрдкрдХреЗ check_policy_service рд╕реЗ рдкрд╣рд▓реЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдкрд░реНрд▓

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд░реВрдкрд░реЗрдЦрд╛ рджреВрдВрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдк рдпрд╣рд╛рдБ рдкрдврд╝ рд░рд╣реЗ рд╣реИрдВ, рд╡рд╣ рд╕рдм рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдПред

 #!/usr/bin/perl $dump = ''; $defaultAction = 'DUNNO'; #   . select((select(STDOUT), $| = 1)[0]); ##################################################################### #   ##################################################################### while (<STDIN>) { if ($_ eq "\n") { #  ,  if (meetSomeReq($dump)) { #  ,  DUNNO print STDOUT "action=$defaultAction\n\n"; } else { #   print STDOUT "action=DEFER_IF_PERMIT Service temporary unavailable\n\n"; } $dump = ''; } else { #    $dump .= $_; } } ##################################################################### #  ##################################################################### sub meetSomeReq { my $dump = shift(); my $line = ''; my %param = (); my $result = 1; #  ,   Postfix   foreach $line (split(/\n/, $dump)) { chomp($line); my ($key, $val) = split(/=/, $line); $param{$key} = $val; } #  -       $result   return $result; } 


рдкрд░рд┐рдгрд╛рдо


рдЕрдм рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рд░реБрдЪрд┐ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН рдореЗрд░рд╛ рдорд╛рдорд▓рд╛ (рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рдФрд░ рдЬреАрдПрд▓рдбреА рдпрд╛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдмреАрдЪ рдХреА рдордзреНрдпрд╕реНрдерддрд╛) рдореИрдВ рдЕрдкрдиреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдореА (рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реА) рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдкреВрд░рд╛ рдкрд╛рда рджреЗрддрд╛ рд╣реВрдВ:

 #!/usr/bin/perl use IO::Socket; use DBI; my $dbh = DBI->connect("DBI:mysql:host=localhost;database=amavisd", "amavisadmin", "amavisadminpw") or die "Couldn't connect to server !$ \n"; $dump = ''; $defaultAction = 'DUNNO'; # Unbuffer standard output. select((select(STDOUT), $| = 1)[0]); ##################################################################### # Main loop ##################################################################### while (<STDIN>) { if ($_ eq "\n") { if (inWhiteList($dump)) { print STDOUT "action=$defaultAction\n\n"; } else { print STDOUT passToGLD($dump); } $dump = ''; } else { $dump .= $_; } } $dbh->disconnect(); ##################################################################### # # Subs # ##################################################################### sub passToGLD { my $dump = shift(); $dump .= "\n\n"; my $sock = new IO::Socket::INET( PeerAddr => '127.0.0.1', PeerPort => '2525', Proto => 'tcp', ); die "Could not create socket: $!\n" unless $sock; print $sock $dump; $resp = <$sock>; close($sock); return $resp."\n"; } sub inWhiteList { my $dump = shift(); my $line = ''; my %param = (); my $result = 1; my $maxSize = 65536; # # Convert text dump to hash # foreach $line (split(/\n/, $dump)) { chomp($line); my ($key, $val) = split(/=/, $line); $param{$key} = $val; } # # Check user's policy # if ($param{'size'} < $maxSize) # Pass large mails without check { my ($user, $domain) = split(/@/, $param{'recipient'}); my $qry = "SELECT count(email) FROM users WHERE policy_id='3' AND (email=? OR email=?)"; my $sth = $dbh->prepare($qry); $sth->execute($param{'recipient'}, '@'.$domain); my @row = $sth->fetchrow_array(); $sth->finish(); $result = $row[0]; } return $result; } 


рдирд┐рд╖реНрдХрд░реНрд╖


рдХреЗрд╡рд▓ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣реА рдореИрдВрдиреЗ GLD рдХреЛ рддреНрдпрд╛рдЧрдиреЗ рдФрд░ рд▓рд┐рдкрд┐ рдХреЛ рдЗрд╕рдХреЗ рдбрд┐рдкреНрдЯреА рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдпрджреНрдпрдкрд┐ GLD C рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдлрд┐рд░ рднреА рдпрд╣ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП MySQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рдн рдЙрддрдирд╛ рдмрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИред рдЦреИрд░, рдордИ 2006 рдореЗрдВ рдЕрдВрддрд┐рдо рдЕрдкрдбреЗрдЯ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬреАрд╡рд┐рдд рдирд╣реАрдВ рд╣реИред рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдХреНрдпрд╛ рдХреЛрдИ рдореЗрд░реЗ рдЕрд▓рд╛рд╡рд╛ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддрд╛ рд╣реИ?

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдФрд░ рдореБрдЭреЗ рд▓рдВрдмреЗ рдЧреНрд░рдВрдереЛрдВ рдХреЗ рдкреНрд░реЗрдорд┐рдпреЛрдВ рдХреЛ рдорд╛рдл рдХрд░ рджреЛ! рдореИрдВ рдЦреБрдж рднреА рдРрд╕рд╛ рд╣реА рд╣реВрдВред

Source: https://habr.com/ru/post/In153463/


All Articles