Ticket #1196: engine.patch

File engine.patch, 38.6 kB (added by JCD, 7 months ago)

Diff of engine directory

  • engine/ispcp-mbox-mngr

    old new  
    3030#    http://isp-control.net 
    3131# 
    3232 
     33 
    3334use FindBin; 
    3435use lib "$FindBin::Bin/"; 
    3536require 'ispcp_common_code.pl'; 
     
    274275 
    275276    my $mail_autorespond = @$mbox_data[8]; 
    276277 
     278        my $mail_forward_list = undef; 
     279 
     280        # create a mail forward list 
     281 
     282    if ($mail_forward ne '_no_') { 
     283 
     284        $mail_forward_list = ',' . $mail_forward; 
     285 
     286    } 
     287 
    277288 
    278289    my $conf_dir = $main::cfg{'CONF_DIR'}; 
    279290 
     
    299310 
    300311    my $transport_backup_cfg = "$backup_dir/transport.$timestamp"; 
    301312 
    302  
    303313    ($rs, $sys) = get_file($aliases_cfg); 
    304314 
    305315    return $rs if ($rs != 0); 
     
    316326 
    317327    return $rs if ($rs != 0); 
    318328 
    319  
    320329    do { 
    321330 
    322         my $dmn_name = $main::domain_id_name{$mail_dmn_id}; 
    323  
    324         my $hash_key = "$mail_acc\@$dmn_name"; 
    325  
    326         my $hash_value = "$mail_acc\@$dmn_name,$mail_acc\@ispcp-arpl.$dmn_name"; 
    327  
    328                 $rs = del_mta_hash_value($aliases_working_cfg, $hash_key); 
    329  
    330                 return $rs if ($rs != 0); 
    331  
    332         $rs = set_mta_hash_value($aliases_working_cfg, $hash_key, $hash_value); 
    333  
    334         return $rs if ($rs != 0); 
    335  
    336         ($rs, $working) = get_file($aliases_working_cfg); 
    337  
    338         return $rs if ($rs != 0); 
    339  
    340         $rs = store_file($aliases_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); 
    341  
    342         return $rs if ($rs != 0); 
    343  
    344  
    345         $hash_key = "ispcp-arpl.$dmn_name"; 
    346  
    347         $hash_value = "ispcp-arpl:"; 
    348  
    349         $rs = set_mta_hash_value($transport_working_cfg, $hash_key, $hash_value); 
    350  
    351         return $rs if ($rs != 0); 
     331        my ($hash_key, $hash_value, $dmn_name) = (undef, undef, undef); 
    352332 
    353         ($rs, $working) = get_file($transport_working_cfg); 
     333        if ($mail_type =~ /^normal_mail.*/) { 
    354334 
    355         return $rs if ($rs != 0)
     335               $dmn_name = $main::domain_id_name{$mail_dmn_id}
    356336 
    357         $rs = store_file($transport_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644)
     337           $hash_key = "$mail_acc\@$dmn_name"
    358338 
    359         return $rs if ($rs != 0)
     339               $hash_value = "$mail_acc\@$dmn_name$mail_forward_list,$mail_acc\@ispcp-arpl.$dmn_name"
    360340 
    361     } if ($mail_type eq 'normal_mail'); 
     341        } elsif ($mail_type =~ /^alias_mail.*/) { 
    362342 
    363     do { 
     343               $dmn_name = $main::als_id_name{$mail_sub_id}; 
    364344 
    365         my $dmn_name = $main::als_id_name{$mail_sub_id}
     345               $hash_key = "$mail_acc\@$dmn_name"
    366346 
    367         my $hash_key = "$mail_acc\@$dmn_name"; 
     347                $hash_value = "$mail_acc\@$dmn_name$mail_forward_list,$mail_acc\@ispcp-arpl.$dmn_name"; 
     348                 
     349        } elsif ($mail_type  =~ /^subdom_mail.*/) { 
     350                 
     351                my $sub_pref = $main::sub_id_name{$mail_sub_id}; 
     352                 
     353                $dmn_name = $main::domain_id_name{$mail_dmn_id}; 
     354                 
     355                my $sub_name = "$sub_pref.$dmn_name"; 
    368356 
    369         my $hash_value = "$mail_acc\@$dmn_name,$mail_acc\@ispcp-arpl.$dmn_name"; 
     357                $hash_key = "$mail_acc\@$sub_name"; 
     358                 
     359                $hash_value = "$mail_acc\@$sub_name$mail_forward_list,$mail_acc\@ispcp-arpl.$sub_name"; 
     360                 
     361                $dmn_name = $sub_name; 
     362        } 
    370363 
    371364                $rs = del_mta_hash_value($aliases_working_cfg, $hash_key); 
    372365 
     
    401394 
    402395        return $rs if ($rs != 0); 
    403396 
    404     } if ($mail_type eq 'alias_mail'); 
    405  
    406     do { 
    407  
    408         my $sub_pref = $main::sub_id_name{$mail_sub_id}; 
    409  
    410         my $dmn_name = $main::domain_id_name{$mail_dmn_id}; 
    411  
    412         my $sub_name = "$sub_pref.$dmn_name"; 
    413  
    414         my $hash_key = "$mail_acc\@$sub_name"; 
    415  
    416         my $hash_value = "$mail_acc\@$sub_name,$mail_acc\@ispcp-arpl.$sub_name"; 
    417  
    418                 $rs = del_mta_hash_value($aliases_working_cfg, $hash_key); 
    419  
    420                 return $rs if ($rs != 0); 
    421  
    422         $rs = set_mta_hash_value($aliases_working_cfg, $hash_key, $hash_value); 
    423  
    424         return $rs if ($rs != 0); 
    425  
    426         ($rs, $working) = get_file($aliases_working_cfg); 
    427  
    428         return $rs if ($rs != 0); 
    429  
    430         $rs = store_file($aliases_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); 
    431  
    432         return $rs if ($rs != 0); 
    433  
    434  
    435         $hash_key = "ispcp-arpl.$sub_name"; 
    436  
    437         $hash_value = "ispcp-arpl:"; 
    438  
    439         $rs = set_mta_hash_value($transport_working_cfg, $hash_key, $hash_value); 
    440  
    441         return $rs if ($rs != 0); 
    442  
    443         ($rs, $working) = get_file($transport_working_cfg); 
    444  
    445         return $rs if ($rs != 0); 
    446  
    447         $rs = store_file($transport_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); 
    448  
    449         return $rs if ($rs != 0); 
    450  
    451     } if ($mail_type eq 'subdom_mail'); 
     397    } if ($mail_type =~ /^normal_mail.*/ || $mail_type =~ /^alias_mail.*/ || $mail_type  =~ /^subdom_mail.*/); 
    452398 
    453399    do { 
    454400 
    455         my $dmn_name = $main::domain_id_name{$mail_dmn_id}
     401        my ($hash_key, $hash_value, $dmn_name) = (undef, undef, undef)
    456402 
    457         my $hash_key = "$mail_acc\@$dmn_name"; 
     403        if ($mail_type =~ /.*normal_forward.*/) { 
    458404 
    459         my $hash_value = undef
     405               $dmn_name = $main::domain_id_name{$mail_dmn_id}
    460406 
    461         ($rs, $rdata) = get_mta_hash_value($aliases_working_cfg, $hash_key)
     407               $hash_key = "$mail_acc\@$dmn_name"
    462408 
    463         return $rs if ($rs != 0)
     409               $hash_value = undef
    464410 
    465         if ($rdata eq '') { 
     411        } elsif ($mail_type =~ /.*alias_forward.*/) { 
    466412 
    467             $hash_value = "$mail_acc\@$dmn_name,$mail_acc\@ispcp-arpl.$dmn_name"
     413               $dmn_name = $main::als_id_name{$mail_sub_id}
    468414 
    469         } else { 
     415               $hash_key = "$mail_acc\@$dmn_name"; 
    470416 
    471             $hash_value = $rdata.",$mail_acc\@ispcp-arpl.$dmn_name"
     417               $hash_value = undef
    472418 
    473419        } 
    474420 
    475         $rs = set_mta_hash_value($aliases_working_cfg, $hash_key, $hash_value); 
    476  
    477         return $rs if ($rs != 0); 
    478  
    479  
    480         ($rs, $working) = get_file($aliases_working_cfg); 
    481  
    482         return $rs if ($rs != 0); 
    483  
    484         $rs = store_file($aliases_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); 
    485  
    486         return $rs if ($rs != 0); 
    487  
    488  
    489         $hash_key = "ispcp-arpl.$dmn_name"; 
    490  
    491         $hash_value = "ispcp-arpl:"; 
    492  
    493         $rs = set_mta_hash_value($transport_working_cfg, $hash_key, $hash_value); 
    494  
    495         return $rs if ($rs != 0); 
    496  
    497         ($rs, $working) = get_file($transport_working_cfg); 
    498  
    499         return $rs if ($rs != 0); 
    500  
    501         $rs = store_file($transport_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); 
    502  
    503         return $rs if ($rs != 0); 
    504  
    505     } if ($mail_type eq 'normal_forward'); 
    506  
    507     do { 
    508  
    509         my $dmn_name = $main::als_id_name{$mail_sub_id}; 
    510  
    511         my $hash_key = "$mail_acc\@$dmn_name"; 
    512  
    513         my $hash_value = undef; 
    514  
    515421        ($rs, $rdata) = get_mta_hash_value($aliases_working_cfg, $hash_key); 
    516422 
    517423        return $rs if ($rs != 0); 
     
    556462 
    557463        return $rs if ($rs != 0); 
    558464 
    559     } if ($mail_type eq 'alias_forward'); 
     465    } if ($mail_type eq 'normal_forward' || $mail_type eq 'alias_forward'); 
    560466 
    561467    do { 
    562468        my $sub_pref = $main::sub_id_name{$mail_sub_id}; 
     
    768674 
    769675    my ($rs, $rdata) = (undef, undef); 
    770676 
     677    my ($hash_key, $hash_value, $dmn_name) = (undef, undef, undef); 
     678 
     679 
    771680    my $mail_id = @$mbox_data[0]; 
    772681 
    773682    my $mail_acc = @$mbox_data[1]; 
     
    827736 
    828737    do { 
    829738 
    830         my $dmn_name = $main::domain_id_name{$mail_dmn_id}; 
    831  
    832         my $hash_key = "$mail_acc\@$dmn_name"; 
    833  
    834         $rs = del_mta_hash_value($aliases_working_cfg, $hash_key); 
    835  
    836         return $rs if ($rs != 0); 
    837  
    838  
    839         ($rs, $working) = get_file($aliases_working_cfg); 
    840  
    841         return $rs if ($rs != 0); 
    842  
    843         $rs = store_file($aliases_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); 
    844  
    845         return $rs if ($rs != 0); 
    846  
    847  
    848         $rs = mbox_check_last_transport_entry($mbox_data); 
    849  
    850         if ($rs == 0) { 
    851  
    852             $rs = mbox_del_last_transport_entry($mbox_data); 
    853  
    854             return $rs if ($rs != 0); 
    855  
    856         } elsif ($rs == -1) { 
     739                if ($mail_type =~ /^normal_mail.*/) { 
    857740 
    858             return $rs
     741               $dmn_name = $main::domain_id_name{$mail_dmn_id}
    859742 
    860         } 
     743               $hash_key = "$mail_acc\@$dmn_name"; 
    861744 
     745                } elsif ($mail_type =~ /^alias_mail.*/) { 
    862746 
    863         ($rs, $working) = get_file($transport_working_cfg)
     747               $dmn_name = $main::als_id_name{$mail_sub_id}
    864748 
    865         return $rs if ($rs != 0)
     749               $hash_key = "$mail_acc\@$dmn_name"
    866750 
    867         $rs = store_file($transport_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); 
     751                } elsif ($mail_type =~ /^subdom_mail.*/) { 
    868752 
    869         return $rs if ($rs != 0)
     753           my $sub_pref = $main::sub_id_name{$mail_sub_id}
    870754 
    871     } if ($mail_type eq 'normal_mail')
     755               $dmn_name = $main::domain_id_name{$mail_dmn_id}
    872756 
    873     do { 
     757               my $sub_name = "$sub_pref.$dmn_name"; 
    874758 
    875         my $dmn_name = $main::als_id_name{$mail_sub_id}; 
     759                $hash_key = "$mail_acc\@$sub_name"; 
     760                 
     761                $dmn_name = $sub_name; 
    876762 
    877         my $hash_key = "$mail_acc\@$dmn_name"; 
     763                } 
    878764 
    879765        $rs = del_mta_hash_value($aliases_working_cfg, $hash_key); 
    880766 
     
    913799 
    914800        return $rs if ($rs != 0); 
    915801 
    916     } if ($mail_type eq 'alias_mail'); 
     802    } if ($mail_type =~ /^normal_mail.*/ || $mail_type =~ /^alias_mail.*/ || $mail_type =~ /^subdom_mail.*/); 
    917803 
    918804    do { 
    919805 
    920         my $sub_pref = $main::sub_id_name{$mail_sub_id}; 
    921  
    922         my $dmn_name = $main::domain_id_name{$mail_dmn_id}; 
    923  
    924         my $sub_name = "$sub_pref.$dmn_name"; 
    925  
    926         my $hash_key = "$mail_acc\@$sub_name"; 
    927  
    928  
    929         $rs = del_mta_hash_value($aliases_working_cfg, $hash_key); 
    930  
    931         return $rs if ($rs != 0); 
    932  
    933         ($rs, $working) = get_file($aliases_working_cfg); 
    934  
    935         return $rs if ($rs != 0); 
    936  
    937         $rs = store_file($aliases_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); 
    938  
    939         return $rs if ($rs != 0); 
    940  
    941  
    942         $rs = mbox_check_last_transport_entry($mbox_data); 
    943  
    944         if ($rs == 0) { 
    945  
    946             $rs = mbox_del_last_transport_entry($mbox_data); 
    947  
    948             return $rs if ($rs != 0); 
    949  
    950         } elsif ($rs == -1) { 
     806        if ($mail_type =~ /^normal_forward.*/) { 
    951807 
    952             return $rs
     808               $dmn_name = $main::domain_id_name{$mail_dmn_id}
    953809 
    954         } 
     810                $hash_key = "$mail_acc\@$dmn_name"; 
    955811 
     812        } elsif ($mail_type =~ /^alias_forward.*/) { 
    956813 
    957         ($rs, $working) = get_file($transport_working_cfg)
     814               $dmn_name = $main::als_id_name{$mail_sub_id}
    958815 
    959         return $rs if ($rs != 0)
     816               $hash_key = "$mail_acc\@$dmn_name"
    960817 
    961         $rs = store_file($transport_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); 
     818            } elsif ($mail_type =~ /^subdom_forward.*/) { 
    962819 
    963         return $rs if ($rs != 0)
     820               my $sub_pref = $main::sub_id_name{$mail_sub_id}
    964821 
    965     } if ($mail_type eq 'subdom_mail')
     822               $dmn_name = $main::domain_id_name{$mail_dmn_id}
    966823 
    967     do { 
     824                my $sub_name = "$sub_pref.$dmn_name"; 
    968825 
    969         my $dmn_name = $main::domain_id_name{$mail_dmn_id}
     826               $hash_key = "$mail_acc\@$sub_name"
    970827 
    971         my $hash_key = "$mail_acc\@$dmn_name"
     828               $dmn_name = $sub_name
    972829 
     830            } 
    973831 
    974832        ($rs, $rdata) = get_mta_hash_value($aliases_working_cfg, $hash_key); 
    975833 
     
    1019877 
    1020878        return $rs if ($rs != 0); 
    1021879 
    1022     } if ($mail_type eq 'normal_forward'); 
     880    } if ($mail_type =~ /^normal_forward.*/ || $mail_type =~ /^alias_forward.*/ || $mail_type =~ /^subdom_forward.*/); 
    1023881 
    1024     do { 
     882    $rs = sys_command("$cmd_postmap $transport_cfg"); 
    1025883 
    1026         my $dmn_name = $main::als_id_name{$mail_sub_id}
     884    return $rs if ($rs != 0)
    1027885 
    1028         my $hash_key = "$mail_acc\@$dmn_name"; 
    1029886 
     887    push_el(\@main::el, 'mbox_del_mta_cfg_autorespond_data()', 'Ending...'); 
    1030888 
    1031         ($rs, $rdata) = get_mta_hash_value($aliases_working_cfg, $hash_key)
     889    return 0
    1032890 
    1033         return $rs if ($rs != 0); 
     891
    1034892 
     893sub mbox_add_mta_cfg_data { 
    1035894 
    1036         if ($rdata ne '') { 
     895    my ($mbox_data) = @_; 
    1037896 
    1038             $rdata =~ s/\,$mail_acc\@ispcp-arpl\.$dmn_name//gi
     897    push_el(\@main::el, 'mbox_add_mta_cfg_data()', 'Starting...')
    1039898 
    1040             $rs = set_mta_hash_value($aliases_working_cfg, $hash_key, $rdata); 
     899    if (!defined($mbox_data) || $mbox_data eq '') { 
    1041900 
    1042             return $rs if ($rs != 0); 
     901        push_el(\@main::el, 'mbox_add_mta_cfg_data()', 'ERROR: Undefined Input Data...'); 
    1043902 
    1044         } 
     903        return -1; 
    1045904 
     905    } 
    1046906 
    1047         ($rs, $working) = get_file($aliases_working_cfg); 
     907    my ($rs, $rdata) = (undef, undef); 
    1048908 
    1049         return $rs if ($rs != 0); 
     909       my ($hash_key, $hash_value) = (undef, undef); 
    1050910 
    1051         $rs = store_file($aliases_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); 
    1052911 
    1053         return $rs if ($rs != 0)
     912    my $mail_id = @$mbox_data[0]
    1054913 
     914    my $mail_acc = @$mbox_data[1]; 
    1055915 
    1056         $rs = mbox_check_last_transport_entry($mbox_data)
     916    my $mail_forward = @$mbox_data[3]
    1057917 
    1058         if ($rs == 0) { 
     918    my $mail_dmn_id = @$mbox_data[4]; 
    1059919 
    1060             $rs = mbox_del_last_transport_entry($mbox_data)
     920    my $mail_type = @$mbox_data[5]
    1061921 
    1062             return $rs if ($rs != 0)
     922    my $mail_sub_id = @$mbox_data[6]
    1063923 
    1064         } elsif ($rs == -1) { 
    1065  
    1066             return $rs; 
    1067  
    1068         } 
    1069  
    1070  
    1071         ($rs, $working) = get_file($transport_working_cfg); 
    1072  
    1073         return $rs if ($rs != 0); 
    1074  
    1075         $rs = store_file($transport_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); 
    1076  
    1077         return $rs if ($rs != 0); 
    1078  
    1079     } if ($mail_type eq 'alias_forward'); 
    1080  
    1081     do { 
    1082  
    1083         my $sub_pref = $main::sub_id_name{$mail_sub_id}; 
    1084  
    1085         my $dmn_name = $main::domain_id_name{$mail_dmn_id}; 
    1086  
    1087         my $sub_name = "$sub_pref.$dmn_name"; 
    1088  
    1089         my $hash_key = "$mail_acc\@$sub_name"; 
    1090  
    1091  
    1092         ($rs, $rdata) = get_mta_hash_value($aliases_working_cfg, $hash_key); 
    1093  
    1094         return $rs if ($rs != 0); 
    1095  
    1096  
    1097         if ($rdata ne '') { 
    1098  
    1099             $rdata =~ s/\,$mail_acc\@ispcp-arpl\.$sub_name//gi; 
    1100  
    1101             $rs = set_mta_hash_value($aliases_working_cfg, $hash_key, $rdata); 
    1102  
    1103             return $rs if ($rs != 0); 
    1104  
    1105         } 
    1106  
    1107  
    1108         ($rs, $working) = get_file($aliases_working_cfg); 
    1109  
    1110         return $rs if ($rs != 0); 
    1111  
    1112         $rs = store_file($aliases_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); 
    1113  
    1114         return $rs if ($rs != 0); 
    1115  
    1116  
    1117         $rs = mbox_check_last_transport_entry($mbox_data); 
    1118  
    1119         if ($rs == 0) { 
    1120  
    1121             $rs = mbox_del_last_transport_entry($mbox_data); 
    1122  
    1123             return $rs if ($rs != 0); 
    1124  
    1125         } elsif ($rs == -1) { 
    1126  
    1127             return $rs; 
    1128  
    1129         } 
    1130  
    1131  
    1132         ($rs, $working) = get_file($transport_working_cfg); 
    1133  
    1134         return $rs if ($rs != 0); 
    1135  
    1136         $rs = store_file($transport_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); 
    1137  
    1138         return $rs if ($rs != 0); 
    1139  
    1140     } if ($mail_type eq 'subdom_forward'); 
    1141  
    1142  
    1143     $rs = sys_command("$cmd_postmap $transport_cfg"); 
    1144  
    1145     return $rs if ($rs != 0); 
    1146  
    1147  
    1148     push_el(\@main::el, 'mbox_del_mta_cfg_autorespond_data()', 'Ending...'); 
    1149  
    1150     return 0; 
    1151  
    1152 
    1153  
    1154 sub mbox_add_mta_cfg_data { 
    1155  
    1156     my ($mbox_data) = @_; 
    1157  
    1158     push_el(\@main::el, 'mbox_add_mta_cfg_data()', 'Starting...'); 
    1159  
    1160     if (!defined($mbox_data) || $mbox_data eq '') { 
    1161  
    1162         push_el(\@main::el, 'mbox_add_mta_cfg_data()', 'ERROR: Undefined Input Data...'); 
    1163  
    1164         return -1; 
    1165  
    1166     } 
    1167  
    1168     my ($rs, $rdata) = (undef, undef); 
    1169  
    1170  
    1171     my $mail_id = @$mbox_data[0]; 
    1172  
    1173     my $mail_acc = @$mbox_data[1]; 
    1174  
    1175     my $mail_forward = @$mbox_data[3]; 
    1176  
    1177     my $mail_dmn_id = @$mbox_data[4]; 
    1178  
    1179     my $mail_type = @$mbox_data[5]; 
    1180  
    1181     my $mail_sub_id = @$mbox_data[6]; 
    1182  
    1183     my $mail_autorespond = @$mbox_data[8]; 
     924    my $mail_autorespond = @$mbox_data[8]; 
    1184925 
    1185926 
    1186927    my $conf_dir = $main::cfg{'CONF_DIR'}; 
     
    1230971 
    1231972    do { 
    1232973 
    1233         my $dmn_name = $main::domain_id_name{$mail_dmn_id}; 
    1234  
    1235         my $hash_key = "$mail_acc\@$dmn_name"; 
    1236  
    1237         my $hash_value = "$dmn_name/$mail_acc/"; 
    1238  
    1239         $rs = set_mta_hash_value($mailboxes_working_cfg, $hash_key, $hash_value); 
    1240  
    1241         return $rs if ($rs != 0); 
    1242  
    1243         ($rs, $working) = get_file($mailboxes_working_cfg); 
    1244  
    1245         return $rs if ($rs != 0); 
    1246  
    1247         $rs = store_file($mailboxes_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); 
     974        if ($mail_type =~ /^normal_mail.*/) { 
    1248975 
    1249         return $rs if ($rs != 0)
     976               my $dmn_name = $main::domain_id_name{$mail_dmn_id}
    1250977 
    1251         if ($mail_autorespond ne '_no_') { 
     978               $hash_key = "$mail_acc\@$dmn_name"; 
    1252979 
    1253             $rs = mbox_add_mta_cfg_autorespond_data($mbox_data)
     980               $hash_value = "$dmn_name/$mail_acc/"
    1254981 
    1255             return $rs if ($rs != 0); 
     982        } elsif ($mail_type =~ /^alias_mail.*/) { 
    1256983 
    1257         } else { 
     984                my $dmn_name = $main::als_id_name{$mail_sub_id}; 
    1258985 
    1259             $rs = mbox_del_mta_cfg_autorespond_data($mbox_data)
     986               $hash_key = "$mail_acc\@$dmn_name"
    1260987 
    1261             return $rs if ($rs != 0)
     988               $hash_value = "$dmn_name/$mail_acc/"
    1262989 
    1263                 $rs = set_mta_hash_value($aliases_working_cfg, $hash_key, $hash_key); 
     990               } elsif ($mail_type =~ /^subdom_mail.*/) { 
    1264991 
    1265            return $rs if ($rs != 0)
     992               my $sub_pref = $main::sub_id_name{$mail_sub_id}
    1266993 
    1267                ($rs, $working) = get_file($aliases_working_cfg)
     994               my $dmn_name = $main::domain_id_name{$mail_dmn_id}
    1268995 
    1269                 return $rs if ($rs != 0)
     996                my $sub_name = "$sub_pref.$dmn_name"
    1270997 
    1271            $rs = store_file($aliases_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); 
     998               push_el(\@main::el, 'mbox_add_mta_cfg_data()', "dbg: sub_pref: $sub_pref, dmn_name: $dmn_name, sub_name: $sub_name"); 
    1272999 
    1273                return $rs if ($rs != 0)
     1000               $hash_key = "$mail_acc\@$sub_name"
    12741001 
    1275         } 
     1002                $hash_value = "$sub_name/$mail_acc/"; 
    12761003 
    1277     } if ($mail_type eq 'normal_mail'); 
    1278  
    1279     do { 
    1280  
    1281         my $dmn_name = $main::als_id_name{$mail_sub_id}; 
    1282  
    1283         my $hash_key = "$mail_acc\@$dmn_name"; 
    1284  
    1285         my $hash_value = "$dmn_name/$mail_acc/"; 
     1004                } 
    12861005 
    12871006        $rs = set_mta_hash_value($mailboxes_working_cfg, $hash_key, $hash_value); 
    12881007 
     
    12961015 
    12971016        return $rs if ($rs != 0); 
    12981017 
    1299         if ($mail_autorespond ne '_no_') { 
     1018        if ($mail_autorespond != 0) { 
    13001019 
    13011020            $rs = mbox_add_mta_cfg_autorespond_data($mbox_data); 
    13021021 
     
    13081027 
    13091028            return $rs if ($rs != 0); 
    13101029 
    1311                 $rs = set_mta_hash_value($aliases_working_cfg, $hash_key, $hash_key); 
     1030                if ($mail_type =~ /.*forward.*/) { 
    13121031 
    1313             return $rs if ($rs != 0); 
     1032                                # append the mail_forward list to the hash_key 
     1033                                 
     1034                                $hash_value = $hash_key . ',' . $mail_forward; 
     1035 
     1036                } else { 
     1037                         
     1038                        # No autoresponder, so the hash_value is equal to the hash_key  
     1039                         
     1040                                $hash_value = $hash_key; 
     1041                         
     1042                } 
    13141043 
    1315                ($rs, $working) = get_file($aliases_working_cfg); 
     1044               $rs = set_mta_hash_value($aliases_working_cfg, $hash_key, $hash_value); 
    13161045 
    13171046                return $rs if ($rs != 0); 
    13181047 
    1319             $rs = store_file($aliases_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); 
    1320  
    1321                 return $rs if ($rs != 0); 
    1322  
    1323         } 
    1324  
    1325     } if ($mail_type eq 'alias_mail'); 
    1326  
    1327     do { 
    1328  
    1329         my $sub_pref = $main::sub_id_name{$mail_sub_id}; 
    1330  
    1331         my $dmn_name = $main::domain_id_name{$mail_dmn_id}; 
    1332  
    1333         my $sub_name = "$sub_pref.$dmn_name"; 
    1334  
    1335         push_el(\@main::el, 'mbox_add_mta_cfg_data()', "dbg: sub_pref: $sub_pref, dmn_name: $dmn_name, sub_name: $sub_name"); 
    1336  
    1337         my $hash_key = "$mail_acc\@$sub_name"; 
    1338  
    1339         my $hash_value = "$sub_name/$mail_acc/"; 
    1340  
    1341         $rs = set_mta_hash_value($mailboxes_working_cfg, $hash_key, $hash_value); 
    1342  
    1343         return $rs if ($rs != 0); 
    1344  
    1345         ($rs, $working) = get_file($mailboxes_working_cfg); 
    1346  
    1347         return $rs if ($rs != 0); 
    1348  
    1349         $rs = store_file($mailboxes_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); 
    1350  
    1351         return $rs if ($rs != 0); 
    1352  
    1353         if ($mail_autorespond ne '_no_') { 
    1354  
    1355             $rs = mbox_add_mta_cfg_autorespond_data($mbox_data); 
    1356  
    1357             return $rs if ($rs != 0); 
    1358  
    1359         } else { 
    1360  
    1361             $rs = mbox_del_mta_cfg_autorespond_data($mbox_data); 
    1362  
    1363             return $rs if ($rs != 0); 
    1364  
    1365                 $rs = set_mta_hash_value($aliases_working_cfg, $hash_key, $hash_key); 
    1366  
    1367             return $rs if ($rs != 0); 
    13681048 
    1369                ($rs, $working) = get_file($aliases_working_cfg); 
     1049               ($rs, $working) = get_file($aliases_working_cfg); 
    13701050 
    13711051                return $rs if ($rs != 0); 
    13721052 
    1373             $rs = store_file($aliases_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); 
    1374  
    1375                 return $rs if ($rs != 0); 
    1376  
    1377         } 
    1378  
    1379     } if ($mail_type eq 'subdom_mail'); 
    1380  
    1381     do { 
    1382  
    1383         my $dmn_name = $main::domain_id_name{$mail_dmn_id}; 
    1384  
    1385         my $hash_key = "$mail_acc\@$dmn_name"; 
    1386  
    1387         my $hash_value = "$dmn_name/$mail_acc/"; 
    1388  
    1389         $rs = set_mta_hash_value($mailboxes_working_cfg, $hash_key, $hash_value); 
    1390  
    1391         return $rs if ($rs != 0); 
    1392  
    1393         ($rs, $working) = get_file($mailboxes_working_cfg); 
    1394  
    1395         return $rs if ($rs != 0); 
    1396  
    1397         $rs = store_file($mailboxes_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); 
    1398  
    1399         return $rs if ($rs != 0); 
    1400  
    1401         $hash_value = ''; 
    1402  
    1403         $mail_forward = "$mail_forward\n"; 
    14041053 
    1405         while ($mail_forward =~ /([^\n]+)\n/g) { 
    1406  
    1407             my $address_entry = $1; 
    1408  
    1409             $address_entry =~ s/\r//g; $address_entry =~ s/\n//g; 
    1410  
    1411             if ($address_entry ne '') { 
    1412  
    1413                 if ($hash_value eq '') { 
    1414  
    1415                     $hash_value = "$address_entry"; 
    1416  
    1417                 } else { 
    1418  
    1419                     $hash_value .= ",$address_entry"; 
    1420  
    1421                 } 
    1422             } 
    1423  
    1424         } 
    1425  
    1426         #$hash_value = "$mail_acc\@$dmn_name,".$hash_value; 
    1427  
    1428         $rs = set_mta_hash_value($aliases_working_cfg, $hash_key, $hash_value); 
    1429  
    1430         return $rs if ($rs != 0); 
    1431  
    1432  
    1433         ($rs, $working) = get_file($aliases_working_cfg); 
    1434  
    1435         return $rs if ($rs != 0); 
     1054                $rs = store_file($aliases_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); 
    14361055 
     1056                return $rs if ($rs != 0); 
    14371057 
    1438         $rs = store_file($aliases_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); 
    1439  
    1440         return $rs if ($rs != 0); 
    1441  
    1442         if ($mail_autorespond ne '_no_') { 
    1443  
    1444             $rs = mbox_add_mta_cfg_autorespond_data($mbox_data); 
    1445  
    1446             return $rs if ($rs != 0); 
    1447  
    1448         } else { 
    1449  
    1450             $rs = mbox_del_mta_cfg_autorespond_data($mbox_data); 
    1451  
    1452             return $rs if ($rs != 0); 
     1058                } 
    14531059 
    1454         } 
    1455  
    1456     } if ($mail_type eq 'normal_forward'); 
     1060    } if ($mail_type =~ /^normal_mail.*/ || $mail_type =~ /^alias_mail.*/ || $mail_type =~ /^subdom_mail.*/); 
    14571061 
    14581062    do { 
    14591063 
    1460         my $dmn_name = $main::als_id_name{$mail_sub_id}; 
    1461  
    1462         my $hash_key = "$mail_acc\@$dmn_name"; 
    1463  
    1464         my $hash_value = "$dmn_name/$mail_acc/"; 
    1465  
    1466         $rs = set_mta_hash_value($mailboxes_working_cfg, $hash_key, $hash_value); 
    1467  
    1468         return $rs if ($rs != 0); 
     1064                if ($mail_type =~ /.*normal_forward.*/) { 
    14691065 
    1470         ($rs, $working) = get_file($mailboxes_working_cfg); 
    1471  
    1472         return $rs if ($rs != 0); 
    1473  
    1474         $rs = store_file($mailboxes_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); 
    1475  
    1476         return $rs if ($rs != 0); 
    1477  
    1478         $hash_value = ''; 
    1479  
    1480         $mail_forward = "$mail_forward\n"; 
    1481  
    1482         while ($mail_forward =~ /([^\n]+)\n/g) { 
    1483  
    1484             my $address_entry = $1; 
    1485  
    1486             $address_entry =~ s/\r//g; $address_entry =~ s/\n//g; 
    1487  
    1488             if ($address_entry ne '') { 
    1489  
    1490                 if ($hash_value eq '') { 
    1491  
    1492                     $hash_value = "$address_entry"; 
    1493  
    1494                 } else { 
    1495  
    1496                     $hash_value .= ",$address_entry"; 
    1497  
    1498                 } 
    1499             } 
    1500  
    1501         } 
    1502  
    1503         #$hash_value = "$mail_acc\@$dmn_name,".$hash_value; 
    1504  
    1505         $rs = set_mta_hash_value($aliases_working_cfg, $hash_key, $hash_value); 
    1506  
    1507         return $rs if ($rs != 0); 
     1066                        my $dmn_name = $main::domain_id_name{$mail_dmn_id}; 
    15081067 
     1068                $hash_key = "$mail_acc\@$dmn_name"; 
    15091069 
    1510         ($rs, $working) = get_file($aliases_working_cfg)
     1070               $hash_value = "$dmn_name/$mail_acc/"
    15111071 
    1512         return $rs if ($rs != 0); 
     1072                } elsif ($mail_type =~ /.*alias_forward.*/) { 
    15131073 
     1074                my $dmn_name = $main::als_id_name{$mail_sub_id}; 
    15141075 
    1515         $rs = store_file($aliases_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644)
     1076           $hash_key = "$mail_acc\@$dmn_name"
    15161077 
    1517         return $rs if ($rs != 0)
     1078               $hash_value = "$dmn_name/$mail_acc/"
    15181079 
    1519         if ($mail_autorespond ne '_no_') { 
     1080        } elsif ($mail_type =~ /.*subdom_forward.*/) { 
    15201081 
    1521             $rs = mbox_add_mta_cfg_autorespond_data($mbox_data)
     1082               my $sub_pref = $main::sub_id_name{$mail_sub_id}
    15221083 
    1523             return $rs if ($rs != 0)
     1084               my $dmn_name = $main::domain_id_name{$mail_dmn_id}
    15241085 
    1525         } else { 
     1086                my $sub_name = "$sub_pref.$dmn_name"; 
    15261087 
    1527             $rs = mbox_del_mta_cfg_autorespond_data($mbox_data)
     1088               $hash_key = "$mail_acc\@$sub_name"
    15281089 
    1529             return $rs if ($rs != 0)
     1090               $hash_value = "$sub_name/$mail_acc/"
    15301091 
    15311092        } 
    15321093 
    1533     } if ($mail_type eq 'alias_forward'); 
    1534  
    1535     do { 
    1536  
    1537         my $sub_pref = $main::sub_id_name{$mail_sub_id}; 
    1538  
    1539         my $dmn_name = $main::domain_id_name{$mail_dmn_id}; 
    1540  
    1541         my $sub_name = "$sub_pref.$dmn_name"; 
    1542  
    1543         my $hash_key = "$mail_acc\@$sub_name"; 
    1544  
    1545         my $hash_value = "$sub_name/$mail_acc/"; 
    1546  
    15471094        $rs = set_mta_hash_value($mailboxes_working_cfg, $hash_key, $hash_value); 
    15481095 
    15491096        return $rs if ($rs != 0); 
     
    15811128 
    15821129        } 
    15831130 
    1584         #$hash_value = "$mail_acc\@$sub_name,".$hash_value; 
    1585  
    15861131        $rs = set_mta_hash_value($aliases_working_cfg, $hash_key, $hash_value); 
    15871132 
    15881133        return $rs if ($rs != 0); 
     
    15971142 
    15981143        return $rs if ($rs != 0); 
    15991144 
    1600         if ($mail_autorespond ne '_no_') { 
     1145        if ($mail_autorespond ne '0') { 
    16011146 
    16021147            $rs = mbox_add_mta_cfg_autorespond_data($mbox_data); 
    16031148 
     
    16111156 
    16121157        } 
    16131158 
    1614     } if ($mail_type eq 'subdom_forward'); 
     1159    } if ($mail_type eq 'normal_forward' || $mail_type eq 'alias_forward' || $mail_type eq 'subdom_forward'); 
    16151160 
    16161161    do { 
    16171162 
     
    16231168 
    16241169 
    16251170        # Let's first remove old catchall accounts (if any); 
    1626  
    1627  
    16281171        $rs = del_mta_hash_value($aliases_working_cfg, $hash_key); 
    16291172 
    16301173        return $rs if ($rs != 0); 
     
    16511194 
    16521195        return $rs if ($rs != 0); 
    16531196 
    1654     } if ($mail_type eq 'normal_catchall'); 
     1197    } if ($mail_type =~ /.*normal_catchall.*/); 
    16551198 
    16561199    do { 
    16571200 
     
    16631206 
    16641207 
    16651208        # Let's first remove old catchall accounts (if any); 
    1666  
    1667  
    16681209        $rs = del_mta_hash_value($aliases_working_cfg, $hash_key); 
    16691210 
    16701211        return $rs if ($rs != 0); 
     
    16911232 
    16921233        return $rs if ($rs != 0); 
    16931234 
    1694     } if ($mail_type eq 'alias_catchall'); 
     1235    } if ($mail_type =~ /.*alias_catchall.*/); 
    16951236 
    16961237    do { # add subdom_catchall 
    16971238 
     
    17331274 
    17341275        return $rs if ($rs != 0); 
    17351276 
    1736     } if ($mail_type eq 'subdom_catchall'); 
     1277    } if ($mail_type =~ /.*subdom_catchall.*/); 
    17371278 
    17381279    $rs = sys_command("$cmd_postmap $mailboxes_cfg"); 
    17391280 
     
    17651306 
    17661307    my ($rs, $rdata) = (undef, undef); 
    17671308 
     1309    my ($hash_key, $hash_value) = (undef, undef); 
    17681310 
    17691311    my $mail_id = @$mbox_data[0]; 
    17701312 
     
    17961338 
    17971339    my ($sys, $working) = (undef, undef); 
    17981340 
    1799     my $mailboxes_cfg = $main::cgf{'MTA_VIRTUAL_MAILBOX_HASH'}; 
     1341    my $mailboxes_cfg = $main::cfg{'MTA_VIRTUAL_MAILBOX_HASH'}; 
    18001342 
    18011343    my $mailboxes_working_cfg = "$working_dir/mailboxes"; 
    18021344 
     
    18281370 
    18291371    do { 
    18301372 
    1831         my $dmn_name = $main::domain_id_name{$mail_dmn_id}; 
     1373        if ($mail_type =~ /^normal_mail.*/) { 
    18321374 
    1833         my $hash_key = "$mail_acc\@$dmn_name"
     1375               my $dmn_name = $main::domain_id_name{$mail_dmn_id}
    18341376 
    1835         $rs = del_mta_hash_value($mailboxes_working_cfg, $hash_key)
     1377               $hash_key = "$mail_acc\@$dmn_name"
    18361378 
    1837         return $rs if ($rs != 0); 
    1838  
    1839         ($rs, $working) = get_file($mailboxes_working_cfg); 
    1840  
    1841         return $rs if ($rs != 0); 
    1842  
    1843         $rs = store_file($mailboxes_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); 
    1844  
    1845         return $rs if ($rs != 0); 
    1846  
    1847         $rs = del_mta_hash_value($aliases_working_cfg, $hash_key); 
    1848  
    1849         return $rs if ($rs != 0); 
    1850  
    1851         ($rs, $working) = get_file($aliases_working_cfg); 
     1379        } elsif ($mail_type =~ /^alias_mail.*/) { 
    18521380&nbs