]> git.proxmox.com Git - pmg-docs.git/blobdiff - gen-pmg.conf.5-opts.pl
doc-generator: add new option smtputf8
[pmg-docs.git] / gen-pmg.conf.5-opts.pl
index 4f06ed70a3ded52cc1b85a2113e4ac70acf055e8..1aff46ad4739f250fa0de5c988442e506111ec35 100755 (executable)
@@ -1,11 +1,11 @@
 #!/usr/bin/perl
 
 use lib '.';
+
 use strict;
 use warnings;
-use PVE::RESTHandler;
 
-use Data::Dumper;
+use PVE::RESTHandler;
 
 use PMG::Config;
 
@@ -14,6 +14,11 @@ my $types = PMG::Config::Base->lookup_types;
 my $single_section = shift;
 my $found = 0;
 
+my $skiped_keys = {
+    'delete' => 1,
+    digest => 1,
+};
+
 my $key_groups = {
     'mail-options' => [
        'mail' , {
@@ -22,8 +27,12 @@ my $key_groups = {
            rejectunknownsender => 1,
            helotests => 1,
            dnsbl_sites => 1,
+           dnsbl_threshold => 1,
            verifyreceivers => 1,
            greylist => 1,
+           greylistmask4 => 1,
+           greylist6 => 1,
+           greylistmask6 => 1,
            spf => 1,
            hide_received => 1,
            dwarning => 1,
@@ -31,6 +40,15 @@ my $key_groups = {
            conn_rate_limit => 1,
            message_rate_limit => 1,
            banner => 1,
+           before_queue_filtering => 1,
+           ndr_on_block => 1,
+           smtputf8 => 1,
+       }],
+    'mail-tls' => [
+       'mail' , {
+           tls => 1,
+           tlsheader => 1,
+           tlslog => 1,
        }],
     'mail-ports' => [
        'mail' , {
@@ -42,10 +60,48 @@ my $key_groups = {
            relay => 1,
            relaynomx => 1,
            relayport => 1,
+           relayprotocol => 1,
            smarthost => 1,
+           smarthostport => 1,
+       }],
+    'admin-dkim' => [
+       'admin' , {
+           dkim_selector => 1,
+           dkim_sign => 1,
+           dkim_sign_all_mail => 1,
        }],
 };
 
+if (1) {
+    # verify if we document all mail settings
+    my $plugin = PMG::Config::Base->lookup('mail');
+    my $schema = $plugin->updateSchema(1);
+    my $properties = $schema->{properties};
+
+    my $found_mail_keys = {};
+    foreach my $group (keys %$key_groups) {
+       my ($sec, $hash) = @{$key_groups->{$group}};
+       next if $sec ne 'mail';
+       foreach my $k (keys %$hash) {
+           if (!defined($properties->{$k})) {
+               warn "\n WARNING: unknown key '$k'";
+               next;
+           }
+           $found_mail_keys->{$k} = 1;
+       }
+    }
+    foreach my $k (keys %$properties) {
+       next if $skiped_keys->{$k};
+       next if $k =~ m/^max_(filters|policy|smtpd_in|smtpd_out)$/;
+
+       if (!defined($found_mail_keys->{$k})) {
+           die "undocumented key '$k'" if !$ENV{PMG_DOCS_IGNORE_MISSING_KEY};
+           warn "WARNING: undocumented key '$k'\n";
+       }
+    }
+}
+
+
 my $select_keys;
 
 if ($single_section) {
@@ -72,12 +128,11 @@ foreach my $section (@$types) {
 
     my $filter = sub {
        my ($key, $phash) = @_;
-       return 1 if $key eq 'digest';
-       return 1 if $key eq 'delete';
+       return 1 if $skiped_keys->{$key};
        return 1 if $select_keys && !$select_keys->{$key};
        return 0;
     };
-    
+
     print PVE::RESTHandler::dump_properties(
        $properties, 'asciidoc', 'config', $filter);
 }
@@ -85,5 +140,5 @@ foreach my $section (@$types) {
 if (defined($single_section)) {
     die "no such section '$single_section'" if !$found;
 }
+
 exit(0);