@@ -851,7 +851,7 @@ if (action)
851851 if (!(s = expand_string (action )) && * expand_string_message )
852852 log_write (0 , LOG_MAIN |LOG_PANIC ,
853853 "failed to expand event_action %s in %s: %s\n" ,
854- event , transport_name , expand_string_message );
854+ event , transport_name ? transport_name : US "main" , expand_string_message );
855855
856856 event_name = event_data = NULL ;
857857
@@ -6240,17 +6240,23 @@ if (process_recipients != RECIP_IGNORE)
62406240 {
62416241 uschar * save_local = deliver_localpart ;
62426242 const uschar * save_domain = deliver_domain ;
6243+ uschar * addr = new -> address , * errmsg = NULL ;
6244+ int start , end , dom ;
62436245
6244- deliver_localpart = expand_string (
6245- string_sprintf ("${local_part:%s}" , new -> address ));
6246- deliver_domain = expand_string (
6247- string_sprintf ("${domain:%s}" , new -> address ));
6246+ if (!parse_extract_address (addr , & errmsg , & start , & end , & dom , TRUE))
6247+ log_write (0 , LOG_MAIN |LOG_PANIC ,
6248+ "failed to parse address '%.100s': %s\n" , addr , errmsg );
6249+ else
6250+ {
6251+ deliver_localpart =
6252+ string_copyn (addr + start , dom ? (dom - 1 ) - start : end - start );
6253+ deliver_domain = dom ? CUS string_copyn (addr + dom , end - dom ) : CUS "" ;
62486254
6249- (void ) event_raise (event_action ,
6250- US "msg:fail:internal" , new -> message );
6255+ event_raise (event_action , US "msg:fail:internal" , new -> message );
62516256
6252- deliver_localpart = save_local ;
6253- deliver_domain = save_domain ;
6257+ deliver_localpart = save_local ;
6258+ deliver_domain = save_domain ;
6259+ }
62546260 }
62556261#endif
62566262 }
0 commit comments