]> git.proxmox.com Git - pmg-api.git/commitdiff
add some postfix maintainance API calls
authorDietmar Maurer <dietmar@proxmox.com>
Sun, 2 Apr 2017 11:02:55 +0000 (13:02 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Sun, 2 Apr 2017 11:10:26 +0000 (13:10 +0200)
PMG/API2/Postfix.pm
PMG/Postfix.pm

index 8fdd5a104e6a0732f9631bf8f95ec1ed827e1663..4215d7ff4b737650f1ee6ba39046b44468eec5b4 100644 (file)
@@ -40,6 +40,9 @@ __PACKAGE__->register_method ({
        my $result = [
            { name => 'mailq' },
            { name => 'qshape' },
+           { name => 'flush_queues' },
+           { name => 'delete_deferred_queue' },
+           { name => 'discard_verify_cache' },
        ];
 
        return $result;
@@ -133,5 +136,73 @@ __PACKAGE__->register_method ({
        return $res;
     }});
 
+__PACKAGE__->register_method ({
+    name => 'flush_queues',
+    path => 'flush_queues',
+    method => 'POST',
+    description => "Flush the queue: attempt to deliver all queued mail.",
+    proxyto => 'node',
+    permissions => { check => [ 'admin' ] },
+    protected => 1,
+    parameters => {
+       additionalProperties => 0,
+       properties => {
+           node => get_standard_option('pve-node'),
+       },
+    },
+    returns => { type => 'null' },
+    code => sub {
+       my ($param) = @_;
+
+       PMG::Postfix::flush_queues();
+
+       return undef;
+    }});
+
+__PACKAGE__->register_method ({
+    name => 'delete_deferred_queue',
+    path => 'delete_deferred_queue',
+    method => 'POST',
+    description => "Delete all mails in the deffered queue.",
+    proxyto => 'node',
+    permissions => { check => [ 'admin' ] },
+    protected => 1,
+    parameters => {
+       additionalProperties => 0,
+       properties => {
+           node => get_standard_option('pve-node'),
+       },
+    },
+    returns => { type => 'null' },
+    code => sub {
+       my ($param) = @_;
+
+       PMG::Postfix::delete_deferred_queue();
+
+       return undef;
+    }});
+
+__PACKAGE__->register_method ({
+    name => 'discard_verify_cache',
+    path => 'discard_verify_cache',
+    method => 'POST',
+    description => "Discards the address verification cache.",
+    proxyto => 'node',
+    permissions => { check => [ 'admin' ] },
+    protected => 1,
+    parameters => {
+       additionalProperties => 0,
+       properties => {
+           node => get_standard_option('pve-node'),
+       },
+    },
+    returns => { type => 'null' },
+    code => sub {
+       my ($param) = @_;
+
+       PMG::Postfix::discard_verify_cache();
+
+       return undef;
+    }});
 
 1;
index 0463f55fbce8c1c13367260e76c1f444d1847a3d..f29d1a5833da8a5ed6c4bca3e7a156427070cc51 100644 (file)
@@ -6,6 +6,8 @@ use Data::Dumper;
 use File::Find;
 use JSON;
 
+use PMG::Utils;
+
 my $spooldir = "/var/spool/postfix";
 
 my $postfix_rec_get = sub {
@@ -163,4 +165,18 @@ sub mailq {
     return ($count, $res);
 }
 
+sub flush_queues {
+    system("/usr/sbin/postqueue -f");
+}
+
+sub delete_deferred_queue {
+    system("/usr/sbin/postsuper -d ALL deferred");
+}
+
+sub discard_verify_cache {
+    unlink "/var/lib/postfix/verify_cache.db";
+
+    PMG::Utils::service_cmd('postfix', 'reload');
+}
+
 1;