Exim áá±ážááºáá¬áá¬ááœááº
áá°áááºážááœá²á·á ááºážáá¯á¶ááœááºá ááŒááºáááááºá á¬áá»á¬ážá¡ááœáẠáááºáá±á¬ááºážá á áºáá±ážááŸá¯áá»á¬ážááᯠáá¯ááºáá±á¬ááºáá±ážááá·áº "verify = áááºáá¶áá°" ACL ááᯠá¡áá¯á¶ážááŒá¯áá¬ážáá±á¬ááŒá±á¬áá·áº áá±ááá¶á¡áá¯á¶ážááŒá¯áá°áá áºáŠážá០áááá¯á¡ááºáá±á¬ ááŸá¯ááºááœá±ážááŸá¯áá»á¬ážáááŸááá² ááá¯ááºááá¯ááºááŸá¯ááᯠáá¯ááºáá±á¬ááºááá¯ááºáááºá á¡ááŒá¬ážááá¯ááááºážá¡ááœáẠáá¯ááá MX á¡ááŒá Ạáá¯ááºáá±á¬ááºááŒááºážá "verify=recipient" ACL ááᯠáááºááŸá¬ážááŒááºáž ááá¯á·ááá¯áẠlocal_part_suffix á០á¡áá»áá¯á·áá±á¬ á¡ááŒá±á¬ááºážá¡áá²áá»á¬áž) áá²á·ááá¯á·áá±á¬ áááºáááºáá»á¬ážááᯠááŒá±á¬ááºážáá²ááá·áºá¡áá« á¡áá±ážá០ááá¯ááºááá¯ááºááŸá¯áá áºáᯠááŒá áºáá±á«áºááá¯ááºáááºá ááá¯ááºááá¯ááºáá°ááẠáá¬áá¬ááá¯á· áá»áááºáááºááŸá¯ááᯠ7 áááºááŒá¬ ááœáá·áºáá¬ážááá¯ááºáá»áŸáẠ(á¥ááá¬á á¡áá»áááºááœááºááŸá¯ááᯠáá»á±á¬áºááŒááºááẠáá áºáááá áºáá»áŸáẠáá áºááá¯áẠáá±ážááá¯á·ááŒááºáž) áááºáž ááŒá áºááá¯ááºáááºá áá áºáá»áááºáááºážááŸá¬áááºá ááŒá¿áá¬áá¡áá±ážá០á¡ááŒááºáá¯ááºáááºá¡ááœáẠááá¯ááá¯ááá¯ážááŸááºážáá±á¬ ááá¯ááºááá¯ááºáá±áž vector áá»á¬áž ááŸááá±ááá¯ááºááẠá
á¡á¬ážáááºážáá»ááºááẠ/src/deliver.c ááá¯ááºááœáẠáááºááŸááºáá¬ážáá±á¬ deliver_message() áá¯ááºáá±á¬ááºááŸá¯ááœáẠáááºáá¶áá°áááááºá á¬ááᯠááŸá¬ážááœááºážá áœá¬á¡áááºááŒá¯ááŒááºážááŒá±á¬áá·áº ááŒá áºáá±á«áºáá¬ááŒááºážááŒá áºáááºá ááááºá á¬áá±á¬áºáááºáá»ááŒááºážááᯠááá¯ááºááœááºááŒááºážááŒáá·áºá ááá¯ááºááá¯ááºáá°áá áºáŠážááẠáááºážááá±áá¬ááᯠexecv() áá¯ááºáá±á¬ááºáá»ááºááŸáá áºááá·áº root áá¯ááºááá¯ááºááœáá·áºááŒáá·áº áá±á«áºááá·áº á¡ááŒá±á¬ááºážááŒáá»ááºáá áºáá¯á ááŒááºážáá¯á¶ááŸá¯áá»á¬ážááœáẠááá¯ááºááá¯ááºáá°áá áºáŠážá០áááŸáááá¯ááºáá«áááºá áá¯ááºáá±á¬ááºáá»ááºááẠááŒá¬ážáá¶ááŒáá·áºáá»áŸá¶ááŸá¯áá»á¬áž ááá¯á·ááá¯áẠááŸááºáá¬ááºáá»ááºá á®ážááŸá¯á¡ááœáẠá¡áá¯á¶ážááŒá¯ááá·áº ááŸá¯ááºááœá±ážáá±á¬áááºážá áá áºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááẠáááá¯á¡ááºáá«á
ááŒá¿áá¬ááẠááááºá á¬ááŒá±á¬ááºážáá²ááŒááºážá¡ááœáẠáááºáá±á¬ááºáá¯á¶á¡áá¯á¶ážááŒá¯ááŸá¯ááŸáá·áº áááºá ááºáá±áááº-
deliver_localpart = expand_string(
string_sprintf("${local_part:%s}", new->ááááºá
á¬));
deliver_domain = expand_string(
string_sprintf("${domain:%s}", new->ááááºá
á¬));
expand_string() áá¯ááºáá±á¬ááºáá»ááºááẠááŒááºáááá¯ááºááœááºáááááá¬ááᯠá áááºááẠáŠážáááºááá·áº â${run{command arguments}â ááᯠá¡ááá¡ááŸááºááŒá¯ááŒááºáž á¡áá«á¡ááẠááŸá¯ááºááœá±ážááœááºážáá±á¬ áá±á«ááºážá ááºáá±á«ááºážá ááºááŸá¯áá áºáá¯ááŒá áºáááºá ááá¯á·ááŒá±á¬áá·áºá SMTP á ááºááŸááºáá áºáá¯á¡ááœááºáž ááá¯ááºááá¯ááºáááºá áá±ááá¶á¡áá¯á¶ážááŒá¯áá°áá áºáŠážááẠlocal_domains list á០hosts áá áºáá¯ááŒá áºááá·áº 'RCPT TO "username+${run{...}}@localhost"' áá²á·ááá¯á·áá±á¬ 'RCPT TO "username+${run{...}}}@localhost"'' áá²á·ááá¯á· á¡áááá·áºáá±ážáááºááá¯á¡ááºáá«áááºá á¡áá¯á¶ážááŒá¯áá°á¡áááºááẠáááºááŸáááŒááºááœááºážá¡áá¯á¶ážááŒá¯áá°á á¡áááºááŒá áºáááºá
áá¬áá¬ááẠmail relay á¡ááŒá áºá¡áá¯ááºáá¯ááºáá«áá relay_to_domains ááœááºáá±á¬áºááŒáá¬ážáá±á¬ host áá»á¬ážáá²á០'RCPT TO "${run{...}}@relaydomain.com"' ááᯠá¡áá±ážááŸáá±ážááá¯á·ááẠáá¯á¶áá±á¬ááºáá«áááºá áááºáááºáá»á¬ážááá¹áá Exim ááẠá¡ááœáá·áºáá°ážáá¯ááºááᯠáá»ááẠáá¯á¶áá±ááá¯ááºáá±á¬ááŒá±á¬áá·áº (deliver_drop_privilege = false)á "${run{...}}" ááŸáááá·áºáá±ážááá¯á·áá±á¬ á¡áááá·áºáá»á¬ážááᯠroot á¡ááŒá Ạáá¯ááºáá±á¬ááºáá«áááºá
á¡á¬ážáááºážáá»ááºááŒá
áºáá²á·áááºááŸá¬ ááŸááºáá¬ážá
áá¬ááŒá
áºáááºá
ááŒáá·áºáá±ááŸá¯áá»á¬ážááœáẠáááºáááºá¡áá¯á¶ážááŒá¯áá±ááá·áº ááááºáá¬ážááŸááºážáá»á¬ážá¡ááœáẠááŒááºáááºáá»ááºááẠáááºááŸáááœááºáᬠáááŸáááá¯ááºáá«áááºá
source: opennet.ru