āĻāĻā§āĻ¸āĻŋāĻŽ āĻŽā§āĻāĻ˛ ââāĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§
āĻĄāĻŋāĻĢāĻ˛ā§āĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§, āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻāĻāĻŋāĻ˛āĻ¤āĻž āĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻā§āĻ°āĻŽāĻŖ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻ¯ā§āĻšā§āĻ¤ā§ "āĻ¯āĻžāĻāĻžāĻ = āĻĒā§āĻ°āĻžāĻĒāĻ" ACL āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¯āĻž āĻŦāĻšāĻŋāĻ°āĻžāĻāĻ¤ āĻ āĻŋāĻāĻžāĻ¨āĻžāĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°ā§āĨ¤ āĻ¸ā§āĻāĻŋāĻāĻ¸ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻšāĻ˛ā§ āĻāĻāĻāĻŋ āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻāĻā§āĻ°āĻŽāĻŖ āĻāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻ¯ā§āĻŽāĻ¨ āĻ āĻ¨ā§āĻ¯ āĻĄā§āĻŽā§āĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ¨ā§āĻĄāĻžāĻ°āĻŋ MX āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°āĻž, "verify=recipient" ACL āĻ āĻĒāĻ¸āĻžāĻ°āĻŖ āĻāĻ°āĻž, āĻŦāĻž local_part_suffix-āĻ āĻāĻŋāĻā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨)āĨ¤ āĻāĻāĻāĻŋ āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻāĻā§āĻ°āĻŽāĻŖāĻ āĻ¸āĻŽā§āĻāĻŦ āĻ¯āĻĻāĻŋ āĻāĻā§āĻ°āĻŽāĻŖāĻāĻžāĻ°ā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻāĻāĻŋ 7 āĻĻāĻŋāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻ˛āĻž āĻ°āĻžāĻāĻ¤ā§ āĻ¸āĻā§āĻˇāĻŽ āĻšāĻ¯āĻŧ (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻāĻāĻŋ āĻāĻžāĻāĻŽāĻāĻāĻ āĻŦāĻžāĻāĻĒāĻžāĻ¸ āĻāĻ°āĻ¤ā§ āĻĒā§āĻ°āĻ¤āĻŋ āĻŽāĻŋāĻ¨āĻŋāĻā§ āĻāĻāĻāĻŋ āĻŦāĻžāĻāĻ āĻĒāĻžāĻ āĻžāĻ¨ā§)āĨ¤ āĻāĻāĻ āĻ¸āĻŽāĻ¯āĻŧā§, āĻāĻāĻŋ āĻ¸āĻŽā§āĻāĻŦ āĻ¯ā§ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻāĻŋāĻ° āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻļā§āĻˇāĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻšāĻ āĻāĻā§āĻ°āĻŽāĻŖ āĻā§āĻā§āĻāĻ° āĻ°āĻ¯āĻŧā§āĻā§āĨ¤
/src/deliver.c āĻĢāĻžāĻāĻ˛ā§ āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ deliver_message() āĻĢāĻžāĻāĻļāĻ¨ā§ āĻĒā§āĻ°āĻžāĻĒāĻā§āĻ° āĻ āĻŋāĻāĻžāĻ¨āĻžāĻ° āĻā§āĻ˛ āĻ¯āĻžāĻāĻžāĻāĻ¯āĻŧā§āĻ° āĻāĻžāĻ°āĻŖā§ āĻĻā§āĻ°ā§āĻŦāĻ˛āĻ¤āĻž āĻ¸ā§āĻˇā§āĻāĻŋ āĻšāĻ¯āĻŧāĨ¤ āĻ ā§āĻ¯āĻžāĻĄā§āĻ°ā§āĻ¸ āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻāĻŋāĻ āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĒā§āĻ˛ā§āĻ āĻāĻ°ā§, āĻāĻāĻāĻ¨ āĻāĻā§āĻ°āĻŽāĻŖāĻāĻžāĻ°ā§ āĻ°ā§āĻ āĻ āĻ§āĻŋāĻāĻžāĻ° āĻ¸āĻš execv() āĻĢāĻžāĻāĻļāĻ¨ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻŦāĻ˛āĻž āĻāĻŽāĻžāĻ¨ā§āĻĄā§āĻ° āĻāĻ°ā§āĻā§āĻŽā§āĻ¨ā§āĻā§ āĻ¤āĻžāĻ° āĻĄā§āĻāĻž āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨ āĻŦāĻžāĻĢāĻžāĻ° āĻāĻāĻžāĻ°āĻĢā§āĻ˛ā§ āĻŦāĻž āĻŽā§āĻŽāĻ°āĻŋ āĻĻā§āĻ°ā§āĻ¨ā§āĻ¤āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻāĻāĻŋāĻ˛ āĻā§āĻļāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧ āĻ¨āĻž āĻ¸āĻšāĻ āĻ āĻā§āĻˇāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ¯āĻĨā§āĻˇā§āĻ;
āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻāĻŋ āĻ āĻŋāĻāĻžāĻ¨āĻž āĻ°ā§āĻĒāĻžāĻ¨ā§āĻ¤āĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤:
Delivery_localpart = expand_string(
string_sprintf("${local_part:%s}", new->āĻ āĻŋāĻāĻžāĻ¨āĻž));
Delivery_domain = expand_string(
string_sprintf("${domain:%s}", new->āĻ āĻŋāĻāĻžāĻ¨āĻž));
expand_string() āĻĢāĻžāĻāĻļāĻ¨āĻāĻŋ āĻāĻāĻāĻŋ āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻāĻāĻŋāĻ˛ āĻāĻŽā§āĻŦāĻžāĻāĻ¨āĻžāĻ°, āĻ¯āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§ "${run{command arguments}" āĻāĻŽāĻžāĻ¨ā§āĻĄāĻāĻŋ āĻ¸āĻ¨āĻžāĻā§āĻ¤ āĻāĻ°āĻž, āĻ¯āĻž āĻāĻāĻāĻŋ āĻŦāĻšāĻŋāĻ°āĻžāĻāĻ¤ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ° āĻāĻžāĻ˛ā§ āĻāĻ°āĻžāĻ° āĻĻāĻŋāĻā§ āĻ¨āĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻāĻāĻāĻžāĻŦā§, āĻāĻāĻāĻŋ SMTP āĻ¸ā§āĻļāĻ¨ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻā§āĻ°āĻŽāĻŖ āĻāĻ°āĻ¤ā§, āĻāĻāĻāĻ¨ āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° 'RCPT TO âusername+${run{...}}@localhostâ'-āĻāĻ° āĻŽāĻ¤ā§ āĻāĻāĻāĻŋ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻĒāĻžāĻ āĻžāĻ¤ā§ āĻšāĻŦā§, āĻ¯ā§āĻāĻžāĻ¨ā§ localhost āĻšāĻ˛ local_domains āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻ° āĻ āĻ¨ā§āĻ¯āĻ¤āĻŽ āĻšā§āĻ¸ā§āĻ, āĻāĻŦāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻ¨āĻžāĻŽ āĻāĻāĻāĻŋ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻ¨āĻžāĻŽāĨ¤
āĻ¯āĻĻāĻŋ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻāĻŋ āĻāĻāĻāĻŋ āĻŽā§āĻ˛ āĻ°āĻŋāĻ˛ā§ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°ā§, āĻ¤āĻžāĻšāĻ˛ā§ āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§āĻāĻžāĻŦā§ 'RCPT TO "${run{...}}@relaydomain.com" āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻĒāĻžāĻ āĻžāĻ¨ā§āĻ āĻ¯āĻĨā§āĻˇā§āĻ, āĻ¯ā§āĻāĻžāĻ¨ā§ relaydomain.com āĻšāĻ˛ relay_to_domains-āĻ āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻā§āĻā§āĻ¤ āĻšā§āĻ¸ā§āĻāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻ¸ā§āĻāĻŋāĻāĻ¸ āĻŦāĻŋāĻāĻžāĻāĨ¤ āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻā§āĻ¸āĻŋāĻŽ āĻĒā§āĻ°āĻŋāĻāĻŋāĻ˛ā§āĻ āĻŽā§āĻĄ āĻĄā§āĻ°āĻĒ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĄāĻŋāĻĢāĻ˛ā§āĻ āĻ¨āĻ¯āĻŧ (deliver_drop_privilege = false), āĻ¤āĻžāĻ "${run{...}}" āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻĒāĻžāĻ¸ āĻāĻ°āĻž āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻ°ā§āĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻž āĻšāĻŦā§āĨ¤
āĻāĻāĻŋ āĻ˛āĻā§āĻˇāĻŖā§āĻ¯āĻŧ āĻ¯ā§ āĻĻā§āĻ°ā§āĻŦāĻ˛āĻ¤āĻž āĻāĻŋāĻ˛
āĻĄāĻŋāĻ¸ā§āĻā§āĻ°āĻŋāĻŦāĻŋāĻāĻļāĻ¨ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ
āĻŦāĻŋāĻ°āĻ¤ āĻĒā§āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻĒāĻ˛āĻŦā§āĻ§
āĻāĻ¤ā§āĻ¸: opennet.ru