Changeset 1124
- Timestamp:
- 04/24/2008 11:21:18 AM
(2 months ago)
- Author:
- rats
- Message:
Fixed #1148: DNS serial is not updated more than once a day when changing sub domains
Fixed #1196: New mail account/forward and auto responder handling
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| r1123 |
r1124 |
|
| 2 | 2 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|---|
| 3 | 3 | |
|---|
| | 4 | 2008-04-24 Benedikt Heintel |
|---|
| | 5 | - GUI: |
|---|
| | 6 | * Fixed #1196: New mail account/forward and auto responder handling |
|---|
| | 7 | - ENGINE: |
|---|
| | 8 | * Fixed #1148: DNS serial is not updated more than once a day when changing sub domains |
|---|
| | 9 | * Fixed #1196: New mail account/forward and auto responder handling |
|---|
| | 10 | |
|---|
| 4 | 11 | 2008-04-14 Jochen Manz |
|---|
| 5 | 12 | - CONFIGS: |
|---|
| 6 | | * Corrected gentoo postfix main.cnf |
|---|
| | 13 | * Corrected gentoo postfix main.cnf |
|---|
| 7 | 14 | - SETUP: |
|---|
| 8 | 15 | * Fixed #1204: wrong configs-Path in Makefile.ubuntu (Install doesn't work) |
|---|
| r1122 |
r1124 |
|
| 275 | 275 | my $mail_autorespond = @$mbox_data[8]; |
|---|
| 276 | 276 | |
|---|
| | 277 | my $mail_forward_list = undef; |
|---|
| | 278 | |
|---|
| | 279 | # create a mail forward list |
|---|
| | 280 | |
|---|
| | 281 | if ($mail_forward ne '_no_') { |
|---|
| | 282 | |
|---|
| | 283 | $mail_forward_list = ',' . $mail_forward; |
|---|
| | 284 | |
|---|
| | 285 | } |
|---|
| | 286 | |
|---|
| 277 | 287 | |
|---|
| 278 | 288 | my $conf_dir = $main::cfg{'CONF_DIR'}; |
|---|
| … | … | |
| 300 | 310 | my $transport_backup_cfg = "$backup_dir/transport.$timestamp"; |
|---|
| 301 | 311 | |
|---|
| 302 | | |
|---|
| 303 | 312 | ($rs, $sys) = get_file($aliases_cfg); |
|---|
| 304 | 313 | |
|---|
| … | … | |
| 317 | 326 | return $rs if ($rs != 0); |
|---|
| 318 | 327 | |
|---|
| 319 | | |
|---|
| 320 | | do { |
|---|
| | 328 | do { |
|---|
| | 329 | |
|---|
| | 330 | my ($hash_key, $hash_value, $dmn_name) = (undef, undef, undef); |
|---|
| | 331 | |
|---|
| | 332 | if ($mail_type =~ /^normal_mail.*/) { |
|---|
| | 333 | |
|---|
| | 334 | $dmn_name = $main::domain_id_name{$mail_dmn_id}; |
|---|
| | 335 | |
|---|
| | 336 | $hash_key = "$mail_acc\@$dmn_name"; |
|---|
| | 337 | |
|---|
| | 338 | $hash_value = "$mail_acc\@$dmn_name$mail_forward_list,$mail_acc\@ispcp-arpl.$dmn_name"; |
|---|
| | 339 | |
|---|
| | 340 | } elsif ($mail_type =~ /^alias_mail.*/) { |
|---|
| | 341 | |
|---|
| | 342 | $dmn_name = $main::als_id_name{$mail_sub_id}; |
|---|
| | 343 | |
|---|
| | 344 | $hash_key = "$mail_acc\@$dmn_name"; |
|---|
| | 345 | |
|---|
| | 346 | $hash_value = "$mail_acc\@$dmn_name$mail_forward_list,$mail_acc\@ispcp-arpl.$dmn_name"; |
|---|
| | 347 | |
|---|
| | 348 | } elsif ($mail_type =~ /^subdom_mail.*/) { |
|---|
| | 349 | |
|---|
| | 350 | my $sub_pref = $main::sub_id_name{$mail_sub_id}; |
|---|
| | 351 | |
|---|
| | 352 | $dmn_name = $main::domain_id_name{$mail_dmn_id}; |
|---|
| | 353 | |
|---|
| | 354 | my $sub_name = "$sub_pref.$dmn_name"; |
|---|
| | 355 | |
|---|
| | 356 | $hash_key = "$mail_acc\@$sub_name"; |
|---|
| | 357 | |
|---|
| | 358 | $hash_value = "$mail_acc\@$sub_name$mail_forward_list,$mail_acc\@ispcp-arpl.$sub_name"; |
|---|
| | 359 | |
|---|
| | 360 | $dmn_name = $sub_name; |
|---|
| | 361 | } |
|---|
| | 362 | |
|---|
| | 363 | $rs = del_mta_hash_value($aliases_working_cfg, $hash_key); |
|---|
| | 364 | |
|---|
| | 365 | return $rs if ($rs != 0); |
|---|
| | 366 | |
|---|
| | 367 | $rs = set_mta_hash_value($aliases_working_cfg, $hash_key, $hash_value); |
|---|
| | 368 | |
|---|
| | 369 | return $rs if ($rs != 0); |
|---|
| | 370 | |
|---|
| | 371 | ($rs, $working) = get_file($aliases_working_cfg); |
|---|
| | 372 | |
|---|
| | 373 | return $rs if ($rs != 0); |
|---|
| | 374 | |
|---|
| | 375 | $rs = store_file($aliases_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); |
|---|
| | 376 | |
|---|
| | 377 | return $rs if ($rs != 0); |
|---|
| | 378 | |
|---|
| | 379 | |
|---|
| | 380 | $hash_key = "ispcp-arpl.$dmn_name"; |
|---|
| | 381 | |
|---|
| | 382 | $hash_value = "ispcp-arpl:"; |
|---|
| | 383 | |
|---|
| | 384 | $rs = set_mta_hash_value($transport_working_cfg, $hash_key, $hash_value); |
|---|
| | 385 | |
|---|
| | 386 | return $rs if ($rs != 0); |
|---|
| | 387 | |
|---|
| | 388 | ($rs, $working) = get_file($transport_working_cfg); |
|---|
| | 389 | |
|---|
| | 390 | return $rs if ($rs != 0); |
|---|
| | 391 | |
|---|
| | 392 | $rs = store_file($transport_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); |
|---|
| | 393 | |
|---|
| | 394 | return $rs if ($rs != 0); |
|---|
| | 395 | |
|---|
| | 396 | } if ($mail_type =~ /^normal_mail.*/ || $mail_type =~ /^alias_mail.*/ || $mail_type =~ /^subdom_mail.*/); |
|---|
| | 397 | |
|---|
| | 398 | do { |
|---|
| | 399 | |
|---|
| | 400 | my ($hash_key, $hash_value, $dmn_name) = (undef, undef, undef); |
|---|
| | 401 | |
|---|
| | 402 | if ($mail_type =~ /.*normal_forward.*/) { |
|---|
| | 403 | |
|---|
| | 404 | $dmn_name = $main::domain_id_name{$mail_dmn_id}; |
|---|
| | 405 | |
|---|
| | 406 | $hash_key = "$mail_acc\@$dmn_name"; |
|---|
| | 407 | |
|---|
| | 408 | $hash_value = undef; |
|---|
| | 409 | |
|---|
| | 410 | } elsif ($mail_type =~ /.*alias_forward.*/) { |
|---|
| | 411 | |
|---|
| | 412 | $dmn_name = $main::als_id_name{$mail_sub_id}; |
|---|
| | 413 | |
|---|
| | 414 | $hash_key = "$mail_acc\@$dmn_name"; |
|---|
| | 415 | |
|---|
| | 416 | $hash_value = undef; |
|---|
| | 417 | |
|---|
| | 418 | } |
|---|
| | 419 | |
|---|
| | 420 | ($rs, $rdata) = get_mta_hash_value($aliases_working_cfg, $hash_key); |
|---|
| | 421 | |
|---|
| | 422 | return $rs if ($rs != 0); |
|---|
| | 423 | |
|---|
| | 424 | if ($rdata eq '') { |
|---|
| | 425 | |
|---|
| | 426 | $hash_value = "$mail_acc\@$dmn_name,$mail_acc\@ispcp-arpl.$dmn_name"; |
|---|
| | 427 | |
|---|
| | 428 | } else { |
|---|
| | 429 | |
|---|
| | 430 | $hash_value = $rdata.",$mail_acc\@ispcp-arpl.$dmn_name"; |
|---|
| | 431 | |
|---|
| | 432 | } |
|---|
| | 433 | |
|---|
| | 434 | $rs = set_mta_hash_value($aliases_working_cfg, $hash_key, $hash_value); |
|---|
| | 435 | |
|---|
| | 436 | return $rs if ($rs != 0); |
|---|
| | 437 | |
|---|
| | 438 | |
|---|
| | 439 | ($rs, $working) = get_file($aliases_working_cfg); |
|---|
| | 440 | |
|---|
| | 441 | return $rs if ($rs != 0); |
|---|
| | 442 | |
|---|
| | 443 | $rs = store_file($aliases_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); |
|---|
| | 444 | |
|---|
| | 445 | return $rs if ($rs != 0); |
|---|
| | 446 | |
|---|
| | 447 | |
|---|
| | 448 | $hash_key = "ispcp-arpl.$dmn_name"; |
|---|
| | 449 | |
|---|
| | 450 | $hash_value = "ispcp-arpl:"; |
|---|
| | 451 | |
|---|
| | 452 | $rs = set_mta_hash_value($transport_working_cfg, $hash_key, $hash_value); |
|---|
| | 453 | |
|---|
| | 454 | return $rs if ($rs != 0); |
|---|
| | 455 | |
|---|
| | 456 | ($rs, $working) = get_file($transport_working_cfg); |
|---|
| | 457 | |
|---|
| | 458 | return $rs if ($rs != 0); |
|---|
| | 459 | |
|---|
| | 460 | $rs = store_file($transport_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); |
|---|
| | 461 | |
|---|
| | 462 | return $rs if ($rs != 0); |
|---|
| | 463 | |
|---|
| | 464 | } if ($mail_type eq 'normal_forward' || $mail_type eq 'alias_forward'); |
|---|
| | 465 | |
|---|
| | 466 | do { |
|---|
| | 467 | my $sub_pref = $main::sub_id_name{$mail_sub_id}; |
|---|
| 321 | 468 | |
|---|
| 322 | 469 | my $dmn_name = $main::domain_id_name{$mail_dmn_id}; |
|---|
| 323 | 470 | |
|---|
| 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); |
|---|
| | 471 | my $sub_name = "$sub_pref.$dmn_name"; |
|---|
| | 472 | |
|---|
| | 473 | my $hash_key = "$mail_acc\@$sub_name"; |
|---|
| | 474 | |
|---|
| | 475 | my $hash_value = undef; |
|---|
| | 476 | |
|---|
| | 477 | ($rs, $rdata) = get_mta_hash_value($aliases_working_cfg, $hash_key); |
|---|
| | 478 | |
|---|
| | 479 | return $rs if ($rs != 0); |
|---|
| | 480 | |
|---|
| | 481 | if ($rdata eq '') { |
|---|
| | 482 | |
|---|
| | 483 | $hash_value = "$mail_acc\@$sub_name,$mail_acc\@ispcp-arpl.$sub_name"; |
|---|
| | 484 | |
|---|
| | 485 | } else { |
|---|
| | 486 | |
|---|
| | 487 | $hash_value = $rdata.",$mail_acc\@ispcp-arpl.$sub_name"; |
|---|
| | 488 | |
|---|
| | 489 | } |
|---|
| 331 | 490 | |
|---|
| 332 | 491 | $rs = set_mta_hash_value($aliases_working_cfg, $hash_key, $hash_value); |
|---|
| … | … | |
| 334 | 493 | return $rs if ($rs != 0); |
|---|
| 335 | 494 | |
|---|
| | 495 | |
|---|
| 336 | 496 | ($rs, $working) = get_file($aliases_working_cfg); |
|---|
| 337 | 497 | |
|---|
| … | … | |
| 343 | 503 | |
|---|
| 344 | 504 | |
|---|
| 345 | | $hash_key = "ispcp-arpl.$dmn_name"; |
|---|
| | 505 | $hash_key = "ispcp-arpl.$sub_name"; |
|---|
| 346 | 506 | |
|---|
| 347 | 507 | $hash_value = "ispcp-arpl:"; |
|---|
| … | … | |
| 359 | 519 | return $rs if ($rs != 0); |
|---|
| 360 | 520 | |
|---|
| 361 | | } if ($mail_type eq 'normal_mail'); |
|---|
| 362 | | |
|---|
| 363 | | do { |
|---|
| 364 | | |
|---|
| 365 | | my $dmn_name = $main::als_id_name{$mail_sub_id}; |
|---|
| 366 | | |
|---|
| 367 | | my $hash_key = "$mail_acc\@$dmn_name"; |
|---|
| 368 | | |
|---|
| 369 | | my $hash_value = "$mail_acc\@$dmn_name,$mail_acc\@ispcp-arpl.$dmn_name"; |
|---|
| 370 | | |
|---|
| 371 | | $rs = del_mta_hash_value($aliases_working_cfg, $hash_key); |
|---|
| 372 | | |
|---|
| 373 | | return $rs if ($rs != 0); |
|---|
| 374 | | |
|---|
| 375 | | $rs = set_mta_hash_value($aliases_working_cfg, $hash_key, $hash_value); |
|---|
| 376 | | |
|---|
| 377 | | return $rs if ($rs != 0); |
|---|
| | 521 | } if ($mail_type eq 'subdom_forward'); |
|---|
| | 522 | |
|---|
| | 523 | $rs = sys_command("$cmd_postmap $transport_cfg"); |
|---|
| | 524 | |
|---|
| | 525 | return $rs if ($rs != 0); |
|---|
| | 526 | |
|---|
| | 527 | push_el(\@main::el, 'mbox_add_mta_cfg_autorespond_data()', 'Ending...'); |
|---|
| | 528 | |
|---|
| | 529 | return 0; |
|---|
| | 530 | |
|---|
| | 531 | } |
|---|
| | 532 | |
|---|
| | 533 | sub mbox_check_last_transport_entry { |
|---|
| | 534 | |
|---|
| | 535 | my ($mbox_data) = @_; |
|---|
| | 536 | |
|---|
| | 537 | push_el(\@main::el, 'mbox_check_last_transport_entry()', 'Starting...'); |
|---|
| | 538 | |
|---|
| | 539 | if (!defined($mbox_data) || $mbox_data eq '') { |
|---|
| | 540 | |
|---|
| | 541 | push_el(\@main::el, 'mbox_check_last_transport_entry()', 'ERROR: Undefined Input Data...'); |
|---|
| | 542 | |
|---|
| | 543 | return -1; |
|---|
| | 544 | |
|---|
| | 545 | } |
|---|
| | 546 | |
|---|
| | 547 | my ($rs, $rows, $sql) = (undef, undef, undef); |
|---|
| | 548 | |
|---|
| | 549 | my $mail_dmn_id = @$mbox_data[4]; |
|---|
| | 550 | |
|---|
| | 551 | my $mail_sub_id = @$mbox_data[6]; |
|---|
| | 552 | |
|---|
| | 553 | my $mail_type = @$mbox_data[5]; |
|---|
| | 554 | |
|---|
| | 555 | if ($mail_type eq 'alias_mail' || $mail_type eq 'alias_forward') { |
|---|
| | 556 | |
|---|
| | 557 | $sql = "select count(mail_id) as cnt from mail_users where (status = 'ok' or status = 'change') and mail_auto_respond != '_no_' and domain_id = $mail_dmn_id and sub_id = $mail_sub_id and mail_type != 'normal_catchall' and mail_type != 'alias_catchall';"; |
|---|
| | 558 | |
|---|
| | 559 | } else { |
|---|
| | 560 | |
|---|
| | 561 | $sql = "select count(mail_id) as cnt from mail_users where (status = 'ok' or status = 'change') and mail_auto_respond != '_no_' and domain_id = $mail_dmn_id and mail_type != 'normal_catchall' and mail_type != 'alias_catchall';"; |
|---|
| | 562 | |
|---|
| | 563 | } |
|---|
| | 564 | |
|---|
| | 565 | ($rs, $rows) = doSQL($sql); |
|---|
| | 566 | |
|---|
| | 567 | return $rs if ($rs != 0); |
|---|
| | 568 | |
|---|
| | 569 | $rs = @$rows[0]; |
|---|
| | 570 | |
|---|
| | 571 | push_el(\@main::el, 'mbox_check_last_transport_entry()', 'Ending...'); |
|---|
| | 572 | |
|---|
| | 573 | return @$rs[0]; |
|---|
| | 574 | |
|---|
| | 575 | } |
|---|
| | 576 | |
|---|
| | 577 | sub mbox_del_last_transport_entry { |
|---|
| | 578 | |
|---|
| | 579 | my ($mbox_data) = @_; |
|---|
| | 580 | |
|---|
| | 581 | push_el(\@main::el, 'mbox_del_last_transport_entry()', 'Starting...'); |
|---|
| | 582 | |
|---|
| | 583 | if (!defined($mbox_data) || $mbox_data eq '') { |
|---|
| | 584 | |
|---|
| | 585 | push_el(\@main::el, 'mbox_del_last_transport_entry()', 'ERROR: Undefined Input Data...'); |
|---|
| | 586 | |
|---|
| | 587 | return -1; |
|---|
| | 588 | |
|---|
| | 589 | } |
|---|
| | 590 | |
|---|
| | 591 | my ($rs, $rdata) = (undef, undef); |
|---|
| | 592 | |
|---|
| | 593 | |
|---|
| | 594 | my $mail_dmn_id = @$mbox_data[4]; |
|---|
| | 595 | |
|---|
| | 596 | my $mail_sub_id = @$mbox_data[6]; |
|---|
| | 597 | |
|---|
| | 598 | my $mail_type = @$mbox_data[5]; |
|---|
| | 599 | |
|---|
| | 600 | my $dmn_name = $main::domain_id_name{$mail_dmn_id}; |
|---|
| | 601 | |
|---|
| | 602 | |
|---|
| | 603 | my $conf_dir = $main::cfg{'CONF_DIR'}; |
|---|
| | 604 | |
|---|
| | 605 | my $working_dir = "$conf_dir/postfix/working"; |
|---|
| | 606 | |
|---|
| | 607 | my $transport_working_cfg = "$working_dir/transport"; |
|---|
| | 608 | |
|---|
| | 609 | |
|---|
| | 610 | my $hash_key = "ispcp-arpl.$dmn_name"; |
|---|
| | 611 | |
|---|
| | 612 | if ($mail_type eq 'alias_mail' || $mail_type eq 'alias_forward') { |
|---|
| | 613 | |
|---|
| | 614 | my $als_name = $main::als_id_name{$mail_sub_id}; |
|---|
| | 615 | |
|---|
| | 616 | $hash_key = "ispcp-arpl.$als_name"; |
|---|
| | 617 | |
|---|
| | 618 | } |
|---|
| | 619 | |
|---|
| | 620 | |
|---|
| | 621 | $rs = del_mta_hash_value($transport_working_cfg, $hash_key); |
|---|
| | 622 | |
|---|
| | 623 | return $rs if ($rs != 0); |
|---|
| | 624 | |
|---|
| | 625 | |
|---|
| | 626 | if ($mail_type ne 'alias_mail' && $mail_type ne 'alias_forward') { |
|---|
| | 627 | |
|---|
| | 628 | my ($sub_key, $sub_value) = (undef, undef); |
|---|
| | 629 | |
|---|
| | 630 | foreach $sub_key (keys %main::sub_id_parentid) { |
|---|
| | 631 | |
|---|
| | 632 | $sub_value = $main::sub_id_parentid{$sub_key}; |
|---|
| | 633 | |
|---|
| | 634 | if ($sub_value == $mail_dmn_id) { |
|---|
| | 635 | |
|---|
| | 636 | # We've got one ;). It must be removed; |
|---|
| | 637 | |
|---|
| | 638 | my $sub_pref = $main::sub_id_name{$sub_key}; |
|---|
| | 639 | |
|---|
| | 640 | my $sub_name = "$sub_pref.$dmn_name"; |
|---|
| | 641 | |
|---|
| | 642 | $hash_key = "ispcp-arpl.$sub_name"; |
|---|
| | 643 | |
|---|
| | 644 | $rs = del_mta_hash_value($transport_working_cfg, $hash_key); |
|---|
| | 645 | |
|---|
| | 646 | return $rs if ($rs != 0); |
|---|
| | 647 | |
|---|
| | 648 | } |
|---|
| | 649 | |
|---|
| | 650 | } |
|---|
| | 651 | |
|---|
| | 652 | } |
|---|
| | 653 | |
|---|
| | 654 | push_el(\@main::el, 'mbox_del_last_transport_entry()', 'Ending...'); |
|---|
| | 655 | |
|---|
| | 656 | return 0; |
|---|
| | 657 | |
|---|
| | 658 | } |
|---|
| | 659 | |
|---|
| | 660 | sub mbox_del_mta_cfg_autorespond_data { |
|---|
| | 661 | |
|---|
| | 662 | my ($mbox_data) = @_; |
|---|
| | 663 | |
|---|
| | 664 | push_el(\@main::el, 'mbox_del_mta_cfg_autorespond_data()', 'Starting...'); |
|---|
| | 665 | |
|---|
| | 666 | if (!defined($mbox_data) || $mbox_data eq '') { |
|---|
| | 667 | |
|---|
| | 668 | push_el(\@main::el, 'mbox_del_mta_cfg_autorespond_data()', 'ERROR: Undefined Input Data...'); |
|---|
| | 669 | |
|---|
| | 670 | return -1; |
|---|
| | 671 | |
|---|
| | 672 | } |
|---|
| | 673 | |
|---|
| | 674 | my ($rs, $rdata) = (undef, undef); |
|---|
| | 675 | |
|---|
| | 676 | my ($hash_key, $hash_value, $dmn_name) = (undef, undef, undef); |
|---|
| | 677 | |
|---|
| | 678 | |
|---|
| | 679 | my $mail_id = @$mbox_data[0]; |
|---|
| | 680 | |
|---|
| | 681 | my $mail_acc = @$mbox_data[1]; |
|---|
| | 682 | |
|---|
| | 683 | my $mail_forward = @$mbox_data[3]; |
|---|
| | 684 | |
|---|
| | 685 | my $mail_dmn_id = @$mbox_data[4]; |
|---|
| | 686 | |
|---|
| | 687 | my $mail_type = @$mbox_data[5]; |
|---|
| | 688 | |
|---|
| | 689 | my $mail_sub_id = @$mbox_data[6]; |
|---|
| | 690 | |
|---|
| | 691 | my $mail_autorespond = @$mbox_data[8]; |
|---|
| | 692 | |
|---|
| | 693 | |
|---|
| | 694 | my $conf_dir = $main::cfg{'CONF_DIR'}; |
|---|
| | 695 | |
|---|
| | 696 | my $cmd_postmap = $main::cfg{'CMD_POSTMAP'}; |
|---|
| | 697 | |
|---|
| | 698 | my $working_dir = "$conf_dir/postfix/working"; |
|---|
| | 699 | |
|---|
| | 700 | my $backup_dir = "$conf_dir/postfix/backup"; |
|---|
| | 701 | |
|---|
| | 702 | my $timestamp = time; |
|---|
| | 703 | |
|---|
| | 704 | my ($sys, $working) = (undef, undef); |
|---|
| | 705 | |
|---|
| | 706 | my $aliases_cfg = $main::cfg{'MTA_VIRTUAL_ALIAS_HASH'}; |
|---|
| | 707 | |
|---|
| | 708 | my $aliases_working_cfg = "$working_dir/aliases"; |
|---|
| | 709 | |
|---|
| | 710 | my $aliases_backup_cfg = "$backup_dir/aliases.$timestamp"; |
|---|
| | 711 | |
|---|
| | 712 | my $transport_cfg = $main::cfg{'MTA_TRANSPORT_HASH'}; |
|---|
| | 713 | |
|---|
| | 714 | my $transport_working_cfg = "$working_dir/transport"; |
|---|
| | 715 | |
|---|
| | 716 | my $transport_backup_cfg = "$backup_dir/transport.$timestamp"; |
|---|
| | 717 | |
|---|
| | 718 | |
|---|
| | 719 | ($rs, $sys) = get_file($aliases_cfg); |
|---|
| | 720 | |
|---|
| | 721 | return $rs if ($rs != 0); |
|---|
| | 722 | |
|---|
| | 723 | $rs = store_file($aliases_backup_cfg, $sys, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); |
|---|
| | 724 | |
|---|
| | 725 | return $rs if ($rs != 0); |
|---|
| | 726 | |
|---|
| | 727 | ($rs, $sys) = get_file($transport_cfg); |
|---|
| | 728 | |
|---|
| | 729 | return $rs if ($rs != 0); |
|---|
| | 730 | |
|---|
| | 731 | $rs = store_file($transport_backup_cfg, $sys, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); |
|---|
| | 732 | |
|---|
| | 733 | return $rs if ($rs != 0); |
|---|
| | 734 | |
|---|
| | 735 | |
|---|
| | 736 | do { |
|---|
| | 737 | |
|---|
| | 738 | if ($mail_type =~ /^normal_mail.*/) { |
|---|
| | 739 | |
|---|
| | 740 | $dmn_name = $main::domain_id_name{$mail_dmn_id}; |
|---|
| | 741 | |
|---|
| | 742 | $hash_key = "$mail_acc\@$dmn_name"; |
|---|
| | 743 | |
|---|
| | 744 | } elsif ($mail_type =~ /^alias_mail.*/) { |
|---|
| | 745 | |
|---|
| | 746 | $dmn_name = $main::als_id_name{$mail_sub_id}; |
|---|
| | 747 | |
|---|
| | 748 | $hash_key = "$mail_acc\@$dmn_name"; |
|---|
| | 749 | |
|---|
| | 750 | } elsif ($mail_type =~ /^subdom_mail.*/) { |
|---|
| | 751 | |
|---|
| | 752 | my $sub_pref = $main::sub_id_name{$mail_sub_id}; |
|---|
| | 753 | |
|---|
| | 754 | $dmn_name = $main::domain_id_name{$mail_dmn_id}; |
|---|
| | 755 | |
|---|
| | 756 | my $sub_name = "$sub_pref.$dmn_name"; |
|---|
| | 757 | |
|---|
| | 758 | $hash_key = "$mail_acc\@$sub_name"; |
|---|
| | 759 | |
|---|
| | 760 | $dmn_name = $sub_name; |
|---|
| | 761 | |
|---|
| | 762 | } |
|---|
| | 763 | |
|---|
| | 764 | $rs = del_mta_hash_value($aliases_working_cfg, $hash_key); |
|---|
| | 765 | |
|---|
| | 766 | return $rs if ($rs != 0); |
|---|
| | 767 | |
|---|
| 378 | 768 | |
|---|
| 379 | 769 | ($rs, $working) = get_file($aliases_working_cfg); |
|---|
| … | … | |
| 386 | 776 | |
|---|
| 387 | 777 | |
|---|
| 388 | | $hash_key = "ispcp-arpl.$dmn_name"; |
|---|
| 389 | | |
|---|
| 390 | | $hash_value = "ispcp-arpl:"; |
|---|
| 391 | | |
|---|
| 392 | | $rs = set_mta_hash_value($transport_working_cfg, $hash_key, $hash_value); |
|---|
| 393 | | |
|---|
| 394 | | return $rs if ($rs != 0); |
|---|
| | 778 | $rs = mbox_check_last_transport_entry($mbox_data); |
|---|
| | 779 | |
|---|
| | 780 | if ($rs == 0) { |
|---|
| | 781 | |
|---|
| | 782 | $rs = mbox_del_last_transport_entry($mbox_data); |
|---|
| | 783 | |
|---|
| | 784 | return $rs if ($rs != 0); |
|---|
| | 785 | |
|---|
| | 786 | } elsif ($rs == -1) { |
|---|
| | 787 | |
|---|
| | 788 | return $rs; |
|---|
| | 789 | |
|---|
| | 790 | } |
|---|
| | 791 | |
|---|
| 395 | 792 | |
|---|
| 396 | 793 | ($rs, $working) = get_file($transport_working_cfg); |
|---|
| … | … | |
| 402 | 799 | return $rs if ($rs != 0); |
|---|
| 403 | 800 | |
|---|
| 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); |
|---|
| | 801 | } if ($mail_type =~ /^normal_mail.*/ || $mail_type =~ /^alias_mail.*/ || $mail_type =~ /^subdom_mail.*/); |
|---|
| | 802 | |
|---|
| | 803 | do { |
|---|
| | 804 | |
|---|
| | 805 | if ($mail_type =~ /^normal_forward.*/) { |
|---|
| | 806 | |
|---|
| | 807 | $dmn_name = $main::domain_id_name{$mail_dmn_id}; |
|---|
| | 808 | |
|---|
| | 809 | $hash_key = "$mail_acc\@$dmn_name"; |
|---|
| | 810 | |
|---|
| | 811 | } elsif ($mail_type =~ /^alias_forward.*/) { |
|---|
| | 812 | |
|---|
| | 813 | $dmn_name = $main::als_id_name{$mail_sub_id}; |
|---|
| | 814 | |
|---|
| | 815 | $hash_key = "$mail_acc\@$dmn_name"; |
|---|
| | 816 | |
|---|
| | 817 | } elsif ($mail_type =~ /^subdom_forward.*/) { |
|---|
| | 818 | |
|---|
| | 819 | my $sub_pref = $main::sub_id_name{$mail_sub_id}; |
|---|
| | 820 | |
|---|
| | 821 | $dmn_name = $main::domain_id_name{$mail_dmn_id}; |
|---|
| | 822 | |
|---|
| | 823 | my $sub_name = "$sub_pref.$dmn_name"; |
|---|
| | 824 | |
|---|
| | 825 | $hash_key = "$mail_acc\@$sub_name"; |
|---|
| | 826 | |
|---|
| | 827 | $dmn_name = $sub_name; |
|---|
| | 828 | |
|---|
| | 829 | } |
|---|
| | 830 | |
|---|
| | 831 | ($rs, $rdata) = get_mta_hash_value($aliases_working_cfg, $hash_key); |
|---|
| | 832 | |
|---|
| | 833 | return $rs if ($rs != 0); |
|---|
| | 834 | |
|---|
| | 835 | |
|---|
| | 836 | if ($rdata ne '') { |
|---|
| | 837 | |
|---|
| | 838 | $rdata =~ s/\,$mail_acc\@ispcp-arpl\.$dmn_name//gi; |
|---|
| | 839 | |
|---|
| | 840 | $rs = set_mta_hash_value($aliases_working_cfg, $hash_key, $rdata); |
|---|
| | 841 | |
|---|
| | 842 | return $rs if ($rs != 0); |
|---|
| | 843 | |
|---|
| | 844 | } |
|---|
| | 845 | |
|---|
| 425 | 846 | |
|---|
| 426 | 847 | ($rs, $working) = get_file($aliases_working_cfg); |
|---|
| … | … | |
| 433 | 854 | |
|---|
| 434 | 855 | |
|---|
| 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); |
|---|
| | 856 | $rs = mbox_check_last_transport_entry($mbox_data); |
|---|
| | 857 | |
|---|
| | 858 | if ($rs == 0) { |
|---|
| | 859 | |
|---|
| | 860 | $rs = mbox_del_last_transport_entry($mbox_data); |
|---|
| | 861 | |
|---|
| | 862 | return $rs if ($rs != 0); |
|---|
| | 863 | |
|---|
| | 864 | } elsif ($rs == -1) { |
|---|
| | 865 | |
|---|
| | 866 | return $rs; |
|---|
| | 867 | |
|---|
| | 868 | } |
|---|
| | 869 | |
|---|
| 442 | 870 | |
|---|
| 443 | 871 | ($rs, $working) = get_file($transport_working_cfg); |
|---|
| … | … | |
| 449 | 877 | return $rs if ($rs != 0); |
|---|
| 450 | 878 | |
|---|
| 451 | | } if ($mail_type eq 'subdom_mail'); |
|---|
| 452 | | |
|---|
| 453 | | do { |
|---|
| 454 | | |
|---|
| 455 | | my $dmn_name = $main::domain_id_name{$mail_dmn_id}; |
|---|
| 456 | | |
|---|
| 457 | | my $hash_key = "$mail_acc\@$dmn_name"; |
|---|
| 458 | | |
|---|
| 459 | | my $hash_value = undef; |
|---|
| 460 | | |
|---|
| 461 | | ($rs, $rdata) = get_mta_hash_value($aliases_working_cfg, $hash_key); |
|---|
| 462 | | |
|---|
| 463 | | return $rs if ($rs != 0); |
|---|
| 464 | | |
|---|
| 465 | | if ($rdata eq '') { |
|---|
| 466 | | |
|---|
| 467 | | $hash_value = "$mail_acc\@$dmn_name,$mail_acc\@ispcp-arpl.$dmn_name"; |
|---|
| | 879 | } if ($mail_type =~ /^normal_forward.*/ || $mail_type =~ /^alias_forward.*/ || $mail_type =~ /^subdom_forward.*/); |
|---|
| | 880 | |
|---|
| | 881 | $rs = sys_command("$cmd_postmap $transport_cfg"); |
|---|
| | 882 | |
|---|
| | 883 | return $rs if ($rs != 0); |
|---|
| | 884 | |
|---|
| | 885 | |
|---|
| | 886 | push_el(\@main::el, 'mbox_del_mta_cfg_autorespond_data()', 'Ending...'); |
|---|
| | 887 | |
|---|
| | 888 | return 0; |
|---|
| | 889 | |
|---|
| | 890 | } |
|---|
| | 891 | |
|---|
| | 892 | sub mbox_add_mta_cfg_data { |
|---|
| | 893 | |
|---|
| | 894 | my ($mbox_data) = @_; |
|---|
| | 895 | |
|---|
| | 896 | push_el(\@main::el, 'mbox_add_mta_cfg_data()', 'Starting...'); |
|---|
| | 897 | |
|---|
| | 898 | if (!defined($mbox_data) || $mbox_data eq '') { |
|---|
| | 899 | |
|---|
| | 900 | push_el(\@main::el, 'mbox_add_mta_cfg_data()', 'ERROR: Undefined Input Data...'); |
|---|
| | 901 | |
|---|
| | 902 | return -1; |
|---|
| | 903 | |
|---|
| | 904 | } |
|---|
| | 905 | |
|---|
| | 906 | my ($rs, $rdata) = (undef, undef); |
|---|
| | 907 | |
|---|
| | 908 | my ($hash_key, $hash_value) = (undef, undef); |
|---|
| | 909 | |
|---|
| | 910 | |
|---|
| | 911 | my $mail_id = @$mbox_data[0]; |
|---|
| | 912 | |
|---|
| | 913 | my $mail_acc = @$mbox_data[1]; |
|---|
| | 914 | |
|---|
| | 915 | my $mail_forward = @$mbox_data[3]; |
|---|
| | 916 | |
|---|
| | 917 | my $mail_dmn_id = @$mbox_data[4]; |
|---|
| | 918 | |
|---|
| | 919 | my $mail_type = @$mbox_data[5]; |
|---|
| | 920 | |
|---|
| | 921 | my $mail_sub_id = @$mbox_data[6]; |
|---|
| | 922 | |
|---|
| | 923 | my $mail_autorespond = @$mbox_data[8]; |
|---|
| | 924 | |
|---|
| | 925 | |
|---|
| | 926 | my $conf_dir = $main::cfg{'CONF_DIR'}; |
|---|
| | 927 | |
|---|
| | 928 | my $cmd_postmap = $main::cfg{'CMD_POSTMAP'}; |
|---|
| | 929 | |
|---|
| | 930 | |
|---|
| | 931 | my $tpl_dir = "$conf_dir/postfix/parts"; |
|---|
| | 932 | |
|---|
| | 933 | my $working_dir = "$conf_dir/postfix/working"; |
|---|
| | 934 | |
|---|
| | 935 | my $backup_dir = "$conf_dir/postfix/backup"; |
|---|
| | 936 | |
|---|
| | 937 | my $timestamp = time; |
|---|
| | 938 | |
|---|
| | 939 | my ($sys, $working) = (undef, undef); |
|---|
| | 940 | |
|---|
| | 941 | my $mailboxes_cfg = $main::cfg{'MTA_VIRTUAL_MAILBOX_HASH'}; |
|---|
| | 942 | |
|---|
| | 943 | my $mailboxes_working_cfg = "$working_dir/mailboxes"; |
|---|
| | 944 | |
|---|
| | 945 | my $mailboxes_backup_cfg = "$backup_dir/mailboxes.$timestamp"; |
|---|
| | 946 | |
|---|
| | 947 | my $aliases_cfg = $main::cfg{'MTA_VIRTUAL_ALIAS_HASH'}; |
|---|
| | 948 | |
|---|
| | 949 | my $aliases_working_cfg = "$working_dir/aliases"; |
|---|
| | 950 | |
|---|
| | 951 | my $aliases_backup_cfg = "$backup_dir/aliases.$timestamp"; |
|---|
| | 952 | |
|---|
| | 953 | |
|---|
| | 954 | ($rs, $sys) = get_file($mailboxes_cfg); |
|---|
| | 955 | |
|---|
| | 956 | return $rs if ($rs != 0); |
|---|
| | 957 | |
|---|
| | 958 | $rs = store_file($mailboxes_backup_cfg, $sys, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); |
|---|
| | 959 | |
|---|
| | 960 | return $rs if ($rs != 0); |
|---|
| | 961 | |
|---|
| | 962 | ($rs, $sys) = get_file($aliases_cfg); |
|---|
| | 963 | |
|---|
| | 964 | return $rs if ($rs != 0); |
|---|
| | 965 | |
|---|
| | 966 | $rs = store_file($aliases_backup_cfg, $sys, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); |
|---|
| | 967 | |
|---|
| | 968 | return $rs if ($rs != 0); |
|---|
| | 969 | |
|---|
| | 970 | |
|---|
| | 971 | do { |
|---|
| | 972 | |
|---|
| | 973 | if ($mail_type =~ /^normal_mail.*/) { |
|---|
| | 974 | |
|---|
| | 975 | my $dmn_name = $main::domain_id_name{$mail_dmn_id}; |
|---|
| | 976 | |
|---|
| | 977 | $hash_key = "$mail_acc\@$dmn_name"; |
|---|
| | 978 | |
|---|
| | 979 | $hash_value = "$dmn_name/$mail_acc/"; |
|---|
| | 980 | |
|---|
| | 981 | } elsif ($mail_type =~ /^alias_mail.*/) { |
|---|
| | 982 | |
|---|
| | 983 | my $dmn_name = $main::als_id_name{$mail_sub_id}; |
|---|
| | 984 | |
|---|
| | 985 | $hash_key = "$mail_acc\@$dmn_name"; |
|---|
| | 986 | |
|---|
| | 987 | $hash_value = "$dmn_name/$mail_acc/"; |
|---|
| | 988 | |
|---|
| | 989 | } elsif ($mail_type =~ /^subdom_mail.*/) { |
|---|
| | 990 | |
|---|
| | 991 | my $sub_pref = $main::sub_id_name{$mail_sub_id}; |
|---|
| | 992 | |
|---|
| | 993 | my $dmn_name = $main::domain_id_name{$mail_dmn_id}; |
|---|
| | 994 | |
|---|
| | 995 | my $sub_name = "$sub_pref.$dmn_name"; |
|---|
| | 996 | |
|---|
| | 997 | push_el(\@main::el, 'mbox_add_mta_cfg_data()', "dbg: sub_pref: $sub_pref, dmn_name: $dmn_name, sub_name: $sub_name"); |
|---|
| | 998 | |
|---|
| | 999 | $hash_key = "$mail_acc\@$sub_name"; |
|---|
| | 1000 | |
|---|
| | 1001 | $hash_value = "$sub_name/$mail_acc/"; |
|---|
| | 1002 | |
|---|
| | 1003 | } |
|---|
| | 1004 | |
|---|
| | 1005 | $rs = set_mta_hash_value($mailboxes_working_cfg, $hash_key, $hash_value); |
|---|
| | 1006 | |
|---|
| | 1007 | return $rs if ($rs != 0); |
|---|
| | 1008 | |
|---|
| | 1009 | ($rs, $working) = get_file($mailboxes_working_cfg); |
|---|
| | 1010 | |
|---|
| | 1011 | return $rs if ($rs != 0); |
|---|
| | 1012 | |
|---|
| | 1013 | $rs = store_file($mailboxes_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); |
|---|
| | 1014 | |
|---|
| | 1015 | return $rs if ($rs != 0); |
|---|
| | 1016 | |
|---|
| | 1017 | if ($mail_autorespond != 0) { |
|---|
| | 1018 | |
|---|
| | 1019 | $rs = mbox_add_mta_cfg_autorespond_data($mbox_data); |
|---|
| | 1020 | |
|---|
| | 1021 | return $rs if ($rs != 0); |
|---|
| 468 | 1022 | |
|---|
| 469 | 1023 | } else { |
|---|
| 470 | 1024 | |
|---|
| 471 | | $hash_value = $rdata.",$mail_acc\@ispcp-arpl.$dmn_name"; |
|---|
| | 1025 | $rs = mbox_del_mta_cfg_autorespond_data($mbox_data); |
|---|
| | 1026 | |
|---|
| | 1027 | return $rs if ($rs != 0); |
|---|
| | 1028 | |
|---|
| | 1029 | if ($mail_type =~ /.*forward.*/) { |
|---|
| | 1030 | |
|---|
| | 1031 | # append the mail_forward list to the hash_key |
|---|
| | 1032 | |
|---|
| | 1033 | $hash_value = $hash_key . ',' . $mail_forward; |
|---|
| | 1034 | |
|---|
| | 1035 | } else { |
|---|
| | 1036 | |
|---|
| | 1037 | # No autoresponder, so the hash_value is equal to the hash_key |
|---|
| | 1038 | |
|---|
| | 1039 | $hash_value = $hash_key; |
|---|
| | 1040 | |
|---|
| | 1041 | } |
|---|
| | 1042 | |
|---|
| | 1043 | $rs = set_mta_hash_value($aliases_working_cfg, $hash_key, $hash_value); |
|---|
| | 1044 | |
|---|
| | 1045 | return $rs if ($rs != 0); |
|---|
| | 1046 | |
|---|
| | 1047 | |
|---|
| | 1048 | ($rs, $working) = get_file($aliases_working_cfg); |
|---|
| | 1049 | |
|---|
| | 1050 | return $rs if ($rs != 0); |
|---|
| | 1051 | |
|---|
| | 1052 | |
|---|
| | 1053 | $rs = store_file($aliases_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); |
|---|
| | 1054 | |
|---|
| | 1055 | return $rs if ($rs != 0); |
|---|
| | 1056 | |
|---|
| | 1057 | } |
|---|
| | 1058 | |
|---|
| | 1059 | } if ($mail_type =~ /^normal_mail.*/ || $mail_type =~ /^alias_mail.*/ || $mail_type =~ /^subdom_mail.*/); |
|---|
| | 1060 | |
|---|
| | 1061 | do { |
|---|
| | 1062 | |
|---|
| | 1063 | if ($mail_type =~ /.*normal_forward.*/) { |
|---|
| | 1064 | |
|---|
| | 1065 | my $dmn_name = $main::domain_id_name{$mail_dmn_id}; |
|---|
| | 1066 | |
|---|
| | 1067 | $hash_key = "$mail_acc\@$dmn_name"; |
|---|
| | 1068 | |
|---|
| | 1069 | $hash_value = "$dmn_name/$mail_acc/"; |
|---|
| | 1070 | |
|---|
| | 1071 | } elsif ($mail_type =~ /.*alias_forward.*/) { |
|---|
| | 1072 | |
|---|
| | 1073 | my $dmn_name = $main::als_id_name{$mail_sub_id}; |
|---|
| | 1074 | |
|---|
| | 1075 | $hash_key = "$mail_acc\@$dmn_name"; |
|---|
| | 1076 | |
|---|
| | 1077 | $hash_value = "$dmn_name/$mail_acc/"; |
|---|
| | 1078 | |
|---|
| | 1079 | } elsif ($mail_type =~ /.*subdom_forward.*/) { |
|---|
| | 1080 | |
|---|
| | 1081 | my $sub_pref = $main::sub_id_name{$mail_sub_id}; |
|---|
| | 1082 | |
|---|
| | 1083 | my $dmn_name = $main::domain_id_name{$mail_dmn_id}; |
|---|
| | 1084 | |
|---|
| | 1085 | my $sub_name = "$sub_pref.$dmn_name"; |
|---|
| | 1086 | |
|---|
| | 1087 | $hash_key = "$mail_acc\@$sub_name"; |
|---|
| | 1088 | |
|---|
| | 1089 | $hash_value = "$sub_name/$mail_acc/"; |
|---|
| 472 | 1090 | |
|---|
| 473 | 1091 | } |
|---|
| 474 | | |
|---|
| 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 | | |
|---|
| 515 | | ($rs, $rdata) = get_mta_hash_value($aliases_working_cfg, $hash_key); |
|---|
| 516 | | |
|---|
| 517 | | return $rs if ($rs != 0); |
|---|
| 518 | | |
|---|
| 519 | | if ($rdata eq '') { |
|---|
| 520 | | |
|---|
| 521 | | $hash_value = "$mail_acc\@$dmn_name,$mail_acc\@ispcp-arpl.$dmn_name"; |
|---|
| 522 | | |
|---|
| 523 | | } else { |
|---|
| 524 | | |
|---|
| 525 | | $hash_value = $rdata.",$mail_acc\@ispcp-arpl.$dmn_name"; |
|---|
| 526 | | |
|---|
| 527 | | } |
|---|
| 528 | | |
|---|
| 529 | | $rs = set_mta_hash_value($aliases_working_cfg, $hash_key, $hash_value); |
|---|
| 530 | | |
|---|
| 531 | | return $rs if ($rs != 0); |
|---|
| 532 | | |
|---|
| 533 | | |
|---|
| 534 | | ($rs, $working) = get_file($aliases_working_cfg); |
|---|
| 535 | | |
|---|
| 536 | | return $rs if ($rs != 0); |
|---|
| 537 | | |
|---|
| 538 | | $rs = store_file($aliases_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); |
|---|
| 539 | | |
|---|
| 540 | | return $rs if ($rs != 0); |
|---|
| 541 | | |
|---|
| 542 | | |
|---|
| 543 | | $hash_key = "ispcp-arpl.$dmn_name"; |
|---|
| 544 | | |
|---|
| 545 | | $hash_value = "ispcp-arpl:"; |
|---|
| 546 | | |
|---|
| 547 | | $rs = set_mta_hash_value($transport_working_cfg, $hash_key, $hash_value); |
|---|
| 548 | | |
|---|
| 549 | | return $rs if ($rs != 0); |
|---|
| 550 | | |
|---|
| 551 | | ($rs, $working) = get_file($transport_working_cfg); |
|---|
| 552 | | |
|---|
| 553 | | return $rs if ($rs != 0); |
|---|
| 554 | | |
|---|
| 555 | | $rs = store_file($transport_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); |
|---|
| 556 | | |
|---|
| 557 | | return $rs if ($rs != 0); |
|---|
| 558 | | |
|---|
| 559 | | } if ($mail_type eq 'alias_forward'); |
|---|
| 560 | | |
|---|
| 561 | | do { |
|---|
| 562 | | my $sub_pref = $main::sub_id_name{$mail_sub_id}; |
|---|
| 563 | | |
|---|
| 564 | | my $dmn_name = $main::domain_id_name{$mail_dmn_id}; |
|---|
| 565 | | |
|---|
| 566 | | my $sub_name = "$sub_pref.$dmn_name"; |
|---|
| 567 | | |
|---|
| 568 | | my $hash_key = "$mail_acc\@$sub_name"; |
|---|
| 569 | | |
|---|
| 570 | | my $hash_value = undef; |
|---|
| 571 | | |
|---|
| 572 | | ($rs, $rdata) = get_mta_hash_value($aliases_working_cfg, $hash_key); |
|---|
| 573 | | |
|---|
| 574 | | return $rs if ($rs != 0); |
|---|
| 575 | | |
|---|
| 576 | | if ($rdata eq '') { |
|---|
| 577 | | |
|---|
| 578 | | $hash_value = "$mail_acc\@$sub_name,$mail_acc\@ispcp-arpl.$sub_name"; |
|---|
| 579 | | |
|---|
| 580 | | } else { |
|---|
| 581 | | |
|---|
| 582 | | $hash_value = $rdata.",$mail_acc\@ispcp-arpl.$sub_name"; |
|---|
| 583 | | |
|---|
| 584 | | } |
|---|
| 585 | | |
|---|
| 586 | | $rs = set_mta_hash_value($aliases_working_cfg, $hash_key, $hash_value); |
|---|
| 587 | | |
|---|
| 588 | | return $rs if ($rs != 0); |
|---|
| 589 | | |
|---|
| 590 | | |
|---|
| 591 | | ($rs, $working) = get_file($aliases_working_cfg); |
|---|
| 592 | | |
|---|
| 593 | | return $rs if ($rs != 0); |
|---|
| 594 | | |
|---|
| 595 | | $rs = store_file($aliases_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); |
|---|
| 596 | | |
|---|
| 597 | | return $rs if ($rs != 0); |
|---|
| 598 | | |
|---|
| 599 | | |
|---|
| 600 | | $hash_key = "ispcp-arpl.$sub_name"; |
|---|
| 601 | | |
|---|
| 602 | | $hash_value = "ispcp-arpl:"; |
|---|
| 603 | | |
|---|
| 604 | | $rs = set_mta_hash_value($transport_working_cfg, $hash_key, $hash_value); |
|---|
| 605 | | |
|---|
| 606 | | return $rs if ($rs != 0); |
|---|
| 607 | | |
|---|
| 608 | | ($rs, $working) = get_file($transport_working_cfg); |
|---|
| 609 | | |
|---|
| 610 | | return $rs if ($rs != 0); |
|---|
| 611 | | |
|---|
| 612 | | $rs = store_file($transport_cfg, $working, $main::cfg{'ROOT_USER'}, $main::cfg{'ROOT_GROUP'}, 0644); |
|---|
| 613 | | |
|---|
| 614 | | return $rs if ($rs != 0); |
|---|
| 615 | | |
|---|
| 616 | | } if ($mail_type eq 'subdom_forward'); |
|---|
| 617 | | |
|---|
| 618 | | $rs = sys_command("$cmd_postmap $transport_cfg"); |
|---|
| 619 | | |
|---|
| 620 | | return $rs if ($rs != 0); |
|---|
| 621 | | |
|---|
| 622 | | push_el(\@main::el, 'mbox_add_mta_cfg_autorespond_data()', 'Ending...'); |
|---|
| 623 | | |
|---|
| 624 | | return 0; |
|---|
| 625 | | |
|---|
| 626 | | } |
|---|
| 627 | | |
|---|
| 628 | | sub mbox_check_last_transport_entry { |
|---|
| 629 | | |
|---|
| 630 | | my ($mbox_data) = @_; |
|---|
| 631 | | |
|---|
| 632 | | push_el(\@main::el, 'mbox_check_last_transport_entry()', 'Starting...'); |
|---|
| 633 | | |
|---|
| 634 | | if (!defined($mbox_data) || $mbox_data eq '') { |
|---|
| 635 | | |
|---|
| 636 | | push_el(\@main::el, 'mbox_check_last_transport_entry()', 'ERROR: Undefined Input Data...'); |
|---|
| 637 | | |
|---|
| 638 | | return -1; |
|---|
| 639 | | |
|---|
| 640 | | } |
|---|
| 641 | | |
|---|
| 642 | | my ($rs, $rows, $sql) = (undef, undef, undef); |
|---|
| 643 | | |
|---|
| 644 | | my $mail_dmn_id = @$mbox_data[4]; |
|---|
| 645 | | |
|---|
| 646 | | my $mail_sub_id = @$mbox_data[6]; |
|---|
| 647 | | |
|---|
| 648 | | my $mail_type = @$mbox_data[5]; |
|---|
| 649 | | |
|---|
| 650 | | if ($mail_type eq 'alias_mail' || $mail_type eq 'alias_forward') { |
|---|
| 651 | | |
|---|
| 652 | | $sql = "select count(mail_id) as cnt from mail_users where (status = 'ok' or status = 'change') and mail_auto_respond != '_no_' and domain_id = $mail_dmn_id and sub_id = $mail_sub_id and mail_type != 'normal_catchall' and mail_type != 'alias_catchall';"; |
|---|
| 653 | | |
|---|
| 654 | | } else { |
|---|
| 655 | | |
|---|
| 656 | | $sql = "select count(mail_id) as cnt from mail_users where (status = 'ok' or status = 'change') and mail_auto_respond != '_no_' and domain_id = $mail_dmn_id and mail_type != 'normal_catchall' and mail_type != 'alias_catchall';"; |
|---|
| 657 | | |
|---|
| 658 | | } |
|---|
| 659 | | |
|---|
| 660 | | ($rs, $rows) = doSQL($sql); |
|---|
| 661 | | |
|---|
| 662 | | return $rs if ($rs != 0); |
|---|
| 663 | | |
|---|
| 664 | | $rs = @$rows[0]; |
|---|
| 665 | | |
|---|
| 666 | | push_el(\@main::el, 'mbox_check_last_transport_entry()', 'Ending...'); |
|---|
| 667 | | |
|---|
| 668 | | return @$rs[0]; |
|---|
| 669 | | |
|---|
| 670 | | } |
|---|
| 671 | | |
|---|
| 672 | | sub mbox_del_last_transport_entry { |
|---|
| 673 | | |
|---|
| 674 | | my ($mbox_data) = @_; |
|---|
| 675 | | |
|---|
| 676 | | push_el(\@main::el, 'mbox_del_last_transport_entry()', 'Starting...'); |
|---|
| 677 | | |
|---|
| 678 | | if (!defined($mbox_data) || $mbox_data eq '') { |
|---|
| 679 | | |
|---|
| 680 | | push_el(\@main::el, 'mbox_del_last_transport_entry()', 'ERROR: Undefined Input Data...'); |
|---|
| 681 | | |
|---|
| 682 | | return -1; |
|---|
| 683 | | |
|---|
| 684 | | } |
|---|
| 685 | | |
|---|
| 686 | | my ($rs, $rdata) = (undef, undef); |
|---|
| 687 | | |
|---|
| 688 | | |
|---|
| 689 | | my $mail_dmn_id = @$mbox_data[4]; |
|---|
| 690 | | |
|---|
| 691 | | my $mail_sub_id = @$mbox_data[6]; |
|---|
| 692 | | |
|---|
| 693 | | my $mail_type = @$mbox_data[5]; |
|---|
| 694 | | |
|---|
| 695 | | my $dmn_name = $main::domain_id_name{$mail_dmn_id}; |
|---|
| 696 | | |
|---|
| 697 | | |
|---|
| 698 | | my $conf_dir = $main::cfg{'CONF_DIR'}; |
|---|
| 699 | | |
|---|
| 700 | | my $working_dir = "$conf_dir/postfix/working"; |
|---|
| 701 | | |
|---|
| 702 | | my $transport_working_cfg = "$working_dir/transport"; |
|---|
| 703 | | |
|---|
| 704 | | |
|---|
| 705 | | my $hash_key = "ispcp-arpl.$dmn_name"; |
|---|
| 706 | | |
|---|
| 707 | | if ($mail_type eq 'alias_mail' || $mail_type eq 'alias_forward') { |
|---|
| 708 | | |
|---|
| 709 | | my $als_name = $main::als_id_name{$mail_sub_id}; |
|---|
| 710 | | |
|---|
| 711 | | $hash_key = "ispcp-arpl.$als_name"; |
|---|
| 712 | | |
|---|
| 713 | | } |
|---|
| 714 | | |
|---|
| 715 | | |
|---|
| 716 | | $rs = del_mta_hash_value($transport_working_cfg, $hash_key); |
|---|
| 717 | | |
|---|
| 718 | | return $rs if ($rs != 0); |
|---|
| 719 | | |
|---|
| 720 | | |
|---|
| 721 | | if ($mail_type ne 'alias_mail' && $mail_type ne 'alias_forward') { |
|---|
| 722 | | |
|---|
| 723 | | my ($sub_key, $sub_value) = (undef, undef); |
|---|
| 724 | | |
|---|
| 725 | | foreach $sub_key (keys %main::sub_id_parentid) { |
|---|
| 726 | | |
|---|
| 727 | | $sub_value = $main::sub_id_parentid{$sub_key}; |
|---|
| 728 | | |
|---|
| 729 | | if ($sub_value == $mail_dmn_id) { |
|---|
| 730 | | |
|---|
| 731 | | # We've got one ;). It must be removed; |
|---|
| 732 | | |
|---|
| 733 | | my $sub_pref = $main::sub_id_name{$sub_key}; |
|---|
| 734 | | |
|---|
| 735 | | my $sub_name = "$sub_pref.$dmn_name"; |
|---|
| 736 | | |
|---|
| 737 | | $hash_key = "ispcp-arpl.$sub_name"; |
|---|
| 738 | | |
|---|
| 739 | | $rs = del_mta_hash_value($transport_working_cfg, $hash_key); |
|---|
| 740 | | |
|---|
| 741 | | return $rs if ($rs != 0); |
|---|
| 742 | | |
|---|
| 743 | | } |
|---|
| 744 | | |
|---|
| 745 | | } |
|---|
| 746 | | |
|---|
| 747 | | } |
|---|
| 748 | | |
|---|
| 749 | | push_el(\@main::el, 'mbox_del_last_transport_entry()', 'Ending...'); |
|---|
| 750 | | |
|---|
| 751 | | return 0; |
|---|
| 752 | | |
|---|
| 753 | | } |
|---|
| 754 | | |
|---|
| 755 | | sub mbox_del_mta_cfg_autorespond_data { |
|---|
| 756 | | |
|---|
| 757 | | my ($mbox_data) = @_; |
|---|
| 758 | | |
|---|
| 759 | | push_el(\@main::el, 'mbox_del_mta_cfg_autorespond_data()', 'Starting...'); |
|---|
| 760 | | |
|---|
| 761 | | if (!defined($mbox_data) || $mbox_data eq '') { |
|---|
| 762 | | |
|---|
| 763 | | push_el(\@main::el, 'mbox_del_mta_cfg_autorespond_data()', 'ERROR: Undefined Input Data...'); |
|---|
| 764 | | |
|---|
| 765 | | return -1; |
|---|
| 766 | | |
|---|
| 767 | | } |
|---|
| 768 | | |
|---|
| 769 | | my ($rs, $rdata) = (undef, undef); |
|---|
| 770 | | |
|---|
| 771 | | my $mail_id = @$mbox_data[0]; |
|---|
| 772 | | |
|---|
| 773 | | my $mail_acc = @$mbox_data[1]; |
|---|
| 774 | | |
|---|
| 775 | | my $mail_forward = @$mbox_data[3]; |
|---|
| 776 | | |
|---|
| 777 | | my $mail_dmn_id = @$mbox_data[4]; |
|---|
| 778 | | |
|---|
| 779 | | my $mail_type = @$mbox_data[5]; |
|---|
| 780 | | |
|---|
| 781 | | my $mail_sub_id = @$mbox_data[6]; |
|---|
| 782 | | |
|---|
| 783 | | my $mail_autorespond = @$mbox_data[8]; |
|---|
| 784 | | |
|---|
| 785 | | |
|---|
| 786 | | my $conf_dir = $main::cfg{'CONF_DIR'}; |
|---|
| 787 | | |
|---|
| 788 | | my $cmd_postmap = $main::cfg{'CMD_POSTMAP'}; |
|---|
| 789 | | |
|---|
| 790 | | my $working_dir = "$conf_dir/pos |
|---|
|