[pmg-devel] Suggestion

Luiz Carlos G. P. C. Branco meedhos at gmail.com
Mon Jun 17 15:33:26 CEST 2019


Helo, my name is Luiz and I installed the PMG last mounth. I'm really
impressed about the quality of this product, so I'm sending this e-mail
first to congrats your team.

I would like to give some feedbacks, about some things that you can
considered in next versions:

- In proofpoint I can set a maximum recipient per message, that reject the
message AFTER sent. In PMG, if I set a "smtpd_recipient_limit" for postfix,
my Exchange Server "understand" the limit and split the recipient in
multiple messages (with different IDs), so the "smtpd_recipient_limit" do
not avoid some real problems (like a virus, sending e-mails for THOUSAND
recipients). If could be possible create a RULE, in (Mail Filter menu) to
maximum recipients (as Who), the message was putted in the queue, the
pmg-filter SUM the recipients and decide the action (like block) I think
will be a great feature.

- In the Quarantine Page (the webpage, not the report), a lot of my users
didn't understand "some many" options (whitelist, blacklist, deliver and
delete), I think could be easier with just two buttons, like Trust (to
whistelist+deliver) and Block (to blacklist+delete), I attach the changes
needed in the code to do this, as a suggestion.

Sorry for any mistakes, my english is not so good as I wantted.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://pve.proxmox.com/pipermail/pmg-devel/attachments/20190617/222308ea/attachment.html>
-------------- next part --------------
In /usr/share/perl5/PMG/API2/Quarantine.pm:

CHANGE enum => ['whitelist', 'blacklist', 'deliver', 'delete'], TO enum => ['whitelist', 'blacklist', 'deliver', 'delete', 'blacklistanddelete', 'whitelistanddeliver'],

CHANGE
	    if ($action eq 'whitelist') {
		PMG::Quarantine::add_to_blackwhite($dbh, $ref->{pmail}, 'WL', [ $sender ]);
	    } elsif ($action eq 'blacklist') {
		PMG::Quarantine::add_to_blackwhite($dbh, $ref->{pmail}, 'BL', [ $sender ]);
	    } elsif ($action eq 'deliver') {
		PMG::Quarantine::deliver_quarantined_mail($dbh, $ref, $ref->{receiver} // $ref->{pmail});
	    } elsif ($action eq 'delete') {
		PMG::Quarantine::delete_quarantined_mail($dbh, $ref);
	    } else {
		die "internal error"; # should not be reached
	    }

TO

	    if ($action eq 'whitelist') {
		PMG::Quarantine::add_to_blackwhite($dbh, $ref->{pmail}, 'WL', [ $sender ]);
	    } elsif ($action eq 'blacklist') {
		PMG::Quarantine::add_to_blackwhite($dbh, $ref->{pmail}, 'BL', [ $sender ]);
	    } elsif ($action eq 'deliver') {
		PMG::Quarantine::deliver_quarantined_mail($dbh, $ref, $ref->{receiver} // $ref->{pmail});
	    } elsif ($action eq 'delete') {
		PMG::Quarantine::delete_quarantined_mail($dbh, $ref);
	    } elsif ($action eq 'blacklistanddelete') {
		PMG::Quarantine::add_to_blackwhite($dbh, $ref->{pmail}, 'BL', [ $sender ]);
		PMG::Quarantine::delete_quarantined_mail($dbh, $ref);
	    } elsif ($action eq 'whitelistanddeliver') {
		PMG::Quarantine::add_to_blackwhite($dbh, $ref->{pmail}, 'WL', [ $sender ]);
	        PMG::Quarantine::deliver_quarantined_mail($dbh, $ref, $ref->{receiver} // $ref->{pmail});	
	    } else {
		die "internal error"; # should not be reached
	    }


In /usr/share/javascript/pmg-gui/js/pmgmanagerlib.js

CHANGE

			'-',
			{
			    reference: 'whitelist',
			    text: gettext('Whitelist'),
			    iconCls: 'fa fa-check',
			    handler: 'btnHandler'
			},
			{
			    reference: 'blacklist',
			    text: gettext('Blacklist'),
			    iconCls: 'fa fa-times',
			    handler: 'btnHandler'
			},
			{
			    reference: 'deliver',
			    text: gettext('Deliver'),
			    iconCls: 'fa fa-paper-plane-o',
			    handler: 'btnHandler'
			},
			{
			    reference: 'delete',
			    text: gettext('Delete'),
			    iconCls: 'fa fa-trash-o',
			    handler: 'btnHandler'
			}


TO

			'-',
/*
			{
			    reference: 'whitelist',
			    text: gettext('Whitelist'),
			    iconCls: 'fa fa-check',
			    handler: 'btnHandler'
			},
			{
			    reference: 'blacklist',
			    text: gettext('Blacklist'),
			    iconCls: 'fa fa-times',
			    handler: 'btnHandler'
			},
			{
			    reference: 'deliver',
			    text: gettext('Deliver'),
			    iconCls: 'fa fa-paper-plane-o',
			    handler: 'btnHandler'
			},
			{
			    reference: 'delete',
			    text: gettext('Delete'),
			    iconCls: 'fa fa-trash-o',
			    handler: 'btnHandler'
			}
*/
			{
			    reference: 'whitelistanddeliver',
			    text: gettext('Trust'),
			    iconCls: 'fa fa-check',
			    handler: 'btnHandler'
			},
			{
			    reference: 'blacklistanddelete',
			    text: gettext('Block'),
			    iconCls: 'fa fa-times',
			    handler: 'btnHandler'
			}

CHANGE

	root: {
	    expanded: true,
	    children: [
		{
		    text: gettext('Spam Quarantine'),
		    iconCls: 'fa fa-cubes',
		    path: 'pmgSpamQuarantine',
		    expanded: true,
		    children: [
			{
			    text: gettext('Whitelist'),
			    iconCls: 'fa fa-file-o',
			    path: 'pmgUserWhitelist',
			    leaf: true
			},
			{
			    text: gettext('Blacklist'),
			    iconCls: 'fa fa-file',
			    path: 'pmgUserBlacklist',
			    leaf: true
			}
		    ]
		}
	    ]
	}

TO

	root: {
	    expanded: true,
	    children: [
		{
		    text: gettext('Spam Quarantine'),
		    iconCls: 'fa fa-cubes',
		    path: 'pmgSpamQuarantine',
		    expanded: true,
		    children: [
			{
			    text: gettext('Trusted'),
			    iconCls: 'fa fa-file-o',
			    path: 'pmgUserWhitelist',
			    leaf: true
			},
			{
			    text: gettext('Blocked'),
			    iconCls: 'fa fa-file',
			    path: 'pmgUserBlacklist',
			    leaf: true
			}
		    ]
		}
	    ]
	}



More information about the pmg-devel mailing list