@@ -559,120 +559,115 @@ def validate_dmarc_policy(local_translation, hostname, result_dict):
559
559
result_dict ['dmarc-ruf' ] = []
560
560
result_dict ['dmarc-rua' ] = []
561
561
562
- try :
563
- # https://www.rfc-editor.org/rfc/rfc7489.txt
564
- # https://www.rfc-editor.org/rfc/rfc7489#section-6.1
565
- dmarc_content = dmarc_content .rstrip (';' )
566
- dmarc_sections = dmarc_content .split (';' )
567
-
568
- for section in dmarc_sections :
569
- section = section .strip ()
570
- if section == '' :
571
- result_dict ['dmarc-errors' ].append (
572
- local_translation ('TEXT_REVIEW_DMARC_EMPTY_SECTION_WHILE_PARSE' ))
573
- continue
562
+ # https://www.rfc-editor.org/rfc/rfc7489.txt
563
+ # https://www.rfc-editor.org/rfc/rfc7489#section-6.1
564
+ dmarc_content = dmarc_content .rstrip (';' )
565
+ dmarc_sections = dmarc_content .split (';' )
574
566
575
- pair = section .split ('=' )
576
- if len (pair ) != 2 :
577
- result_dict ['dmarc-errors' ].append (
578
- local_translation ('TEXT_REVIEW_DMARC_PAIR_INVALID' ))
579
- continue
567
+ for section in dmarc_sections :
568
+ section = section .strip ()
569
+ if section == '' :
570
+ result_dict ['dmarc-errors' ].append (
571
+ local_translation ('TEXT_REVIEW_DMARC_EMPTY_SECTION_WHILE_PARSE' ))
572
+ continue
580
573
581
- key = pair [0 ]
582
- data = pair [1 ]
574
+ pair = section .split ('=' )
575
+ if len (pair ) != 2 :
576
+ result_dict ['dmarc-errors' ].append (
577
+ local_translation ('TEXT_REVIEW_DMARC_PAIR_INVALID' ))
578
+ continue
583
579
584
- if key == 'p' :
585
- if data in ('none' , 'quarantine' , 'reject' ):
586
- result_dict ['dmarc-p' ] = data
587
- else :
588
- result_dict ['dmarc-errors' ].append (
589
- local_translation (
590
- 'TEXT_REVIEW_DMARC_POLICY_INVALID' ))
591
- elif key == 'sp' :
592
- if data in ('none' , 'quarantine' , 'reject' ):
593
- result_dict ['dmarc-sp' ] = data
594
- else :
595
- result_dict ['dmarc-errors' ].append (
596
- local_translation (
597
- 'TEXT_REVIEW_DMARC_SUBPOLICY_INVALID' ))
598
- elif key == 'adkim' :
599
- if data == 'r' :
580
+ key = pair [0 ]
581
+ data = pair [1 ]
582
+
583
+ if key == 'p' :
584
+ if data in ('none' , 'quarantine' , 'reject' ):
585
+ result_dict ['dmarc-p' ] = data
586
+ else :
587
+ result_dict ['dmarc-errors' ].append (
588
+ local_translation (
589
+ 'TEXT_REVIEW_DMARC_POLICY_INVALID' ))
590
+ elif key == 'sp' :
591
+ if data in ('none' , 'quarantine' , 'reject' ):
592
+ result_dict ['dmarc-sp' ] = data
593
+ else :
594
+ result_dict ['dmarc-errors' ].append (
595
+ local_translation (
596
+ 'TEXT_REVIEW_DMARC_SUBPOLICY_INVALID' ))
597
+ elif key == 'adkim' :
598
+ if data == 'r' :
599
+ result_dict ['dmarc-warnings' ].append (
600
+ local_translation (
601
+ 'TEXT_REVIEW_DMARC_ADKIM_USES_DEFAULT' ))
602
+ elif data == 's' :
603
+ result_dict ['dmarc-adkim' ] = data
604
+ else :
605
+ result_dict ['dmarc-errors' ].append (
606
+ local_translation (
607
+ 'TEXT_REVIEW_DMARC_ADKIM_INVALID' ))
608
+ elif key == 'aspf' :
609
+ if data == 'r' :
610
+ result_dict ['dmarc-warnings' ].append (
611
+ local_translation (
612
+ 'TEXT_REVIEW_DMARC_ASPF_USES_DEFAULT' ))
613
+ elif data == 's' :
614
+ result_dict ['dmarc-aspf' ] = data
615
+ else :
616
+ result_dict ['dmarc-errors' ].append (
617
+ local_translation (
618
+ 'TEXT_REVIEW_DMARC_ASPF_INVALID' ))
619
+ elif key == 'fo' :
620
+ result_dict ['dmarc-fo' ] = []
621
+ fields = data .split (',' )
622
+ for field in fields :
623
+ if field == '0' :
624
+ result_dict ['dmarc-fo' ].append (field )
600
625
result_dict ['dmarc-warnings' ].append (
601
626
local_translation (
602
- 'TEXT_REVIEW_DMARC_ADKIM_USES_DEFAULT ' ))
603
- elif data == 's' :
604
- result_dict ['dmarc-adkim' ] = data
627
+ 'TEXT_REVIEW_DMARC_FO_USES_DEFAULT ' ))
628
+ elif field in ( '1' , 'd' , 's' ) :
629
+ result_dict ['dmarc-fo' ]. append ( field )
605
630
else :
606
631
result_dict ['dmarc-errors' ].append (
607
632
local_translation (
608
- 'TEXT_REVIEW_DMARC_ADKIM_INVALID' ))
609
- elif key == 'aspf' :
610
- if data == 'r' :
633
+ 'TEXT_REVIEW_DMARC_FO_INVALID' ))
634
+ elif key == 'rua' :
635
+ fields = data .split (',' )
636
+ for field in fields :
637
+ result_dict ['dmarc-rua' ].append (field )
638
+ elif key == 'ruf' :
639
+ fields = data .split (',' )
640
+ for field in fields :
641
+ result_dict ['dmarc-ruf' ].append (field )
642
+ elif key == 'rf' :
643
+ if data == 'afrf' :
644
+ result_dict ['dmarc-warnings' ].append (local_translation (
645
+ 'TEXT_REVIEW_DMARC_RF_USES_DEFAULT' ))
646
+ result_dict ['dmarc-rf' ] = data
647
+ elif key == 'pct' :
648
+ try :
649
+ result_dict ['dmarc-pct' ] = int (data )
650
+ if result_dict ['dmarc-pct' ] == 100 :
611
651
result_dict ['dmarc-warnings' ].append (
612
- local_translation (
613
- 'TEXT_REVIEW_DMARC_ASPF_USES_DEFAULT' ))
614
- elif data == 's' :
615
- result_dict ['dmarc-aspf' ] = data
616
- else :
617
- result_dict ['dmarc-errors' ].append (
618
- local_translation (
619
- 'TEXT_REVIEW_DMARC_ASPF_INVALID' ))
620
- elif key == 'fo' :
621
- result_dict ['dmarc-fo' ] = []
622
- fields = data .split (',' )
623
- for field in fields :
624
- if field == '0' :
625
- result_dict ['dmarc-fo' ].append (field )
626
- result_dict ['dmarc-warnings' ].append (
627
- local_translation (
628
- 'TEXT_REVIEW_DMARC_FO_USES_DEFAULT' ))
629
- elif field in ('1' , 'd' , 's' ):
630
- result_dict ['dmarc-fo' ].append (field )
631
- else :
632
- result_dict ['dmarc-errors' ].append (
633
- local_translation (
634
- 'TEXT_REVIEW_DMARC_FO_INVALID' ))
635
- elif key == 'rua' :
636
- fields = data .split (',' )
637
- for field in fields :
638
- result_dict ['dmarc-rua' ].append (field )
639
- elif key == 'ruf' :
640
- fields = data .split (',' )
641
- for field in fields :
642
- result_dict ['dmarc-ruf' ].append (field )
643
- elif key == 'rf' :
644
- if data == 'afrf' :
645
- result_dict ['dmarc-warnings' ].append (local_translation (
646
- 'TEXT_REVIEW_DMARC_RF_USES_DEFAULT' ))
647
- result_dict ['dmarc-rf' ] = data
648
- elif key == 'pct' :
649
- try :
650
- result_dict ['dmarc-pct' ] = int (data )
651
- if result_dict ['dmarc-pct' ] == 100 :
652
- result_dict ['dmarc-warnings' ].append (
653
- local_translation ('TEXT_REVIEW_DMARC_PCT_USES_DEFAULT' ))
654
- elif 100 < result_dict ['dmarc-pct' ] < 0 :
655
- result_dict ['dmarc-errors' ].append (
656
- local_translation ('TEXT_REVIEW_DMARC_PCT_INVALID' ))
657
- result_dict ['dmarc-pct' ] = None
658
- except TypeError :
652
+ local_translation ('TEXT_REVIEW_DMARC_PCT_USES_DEFAULT' ))
653
+ elif 100 < result_dict ['dmarc-pct' ] < 0 :
659
654
result_dict ['dmarc-errors' ].append (
660
655
local_translation ('TEXT_REVIEW_DMARC_PCT_INVALID' ))
661
656
result_dict ['dmarc-pct' ] = None
662
- elif key == 'ri' :
663
- try :
664
- result_dict [ 'dmarc-ri' ] = int ( data )
665
- if result_dict ['dmarc-ri ' ] == 86400 :
666
- result_dict [ 'dmarc-warnings' ]. append (
667
- local_translation ( 'TEXT_REVIEW_DMARC_RI_USES_DEFAULT' ))
668
- except TypeError :
669
- result_dict ['dmarc-errors' ]. append (
670
- local_translation ( 'TEXT_REVIEW_DMARC_RI_INVALID' ))
671
- result_dict [ 'dmarc-ri' ] = None
672
-
673
-
674
- except Exception as ex :
675
- print ( 'ex C:' , ex )
657
+ except TypeError :
658
+ result_dict [ 'dmarc-errors' ]. append (
659
+ local_translation ( 'TEXT_REVIEW_DMARC_PCT_INVALID' ) )
660
+ result_dict ['dmarc-pct ' ] = None
661
+ elif key == 'ri' :
662
+ try :
663
+ result_dict [ 'dmarc-ri' ] = int ( data )
664
+ if result_dict ['dmarc-ri' ] == 86400 :
665
+ result_dict [ 'dmarc-warnings' ]. append (
666
+ local_translation ( 'TEXT_REVIEW_DMARC_RI_USES_DEFAULT' ))
667
+ except TypeError :
668
+ result_dict [ 'dmarc-errors' ]. append (
669
+ local_translation ( 'TEXT_REVIEW_DMARC_RI_INVALID' ))
670
+ result_dict [ 'dmarc-ri' ] = None
676
671
677
672
return result_dict
678
673
0 commit comments