luci-app-email: configure EmailRelay

The EmailRelay is an SMTP and POP3 server.
It's the only server that has UCI config.
That's why the app is called just Email.
If any new mail server added we can create a separate tab within the same app.

Signed-off-by: Sergey Ponomarev <stokito@gmail.com>
* Improve translation handling
* Update i18n
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
This commit is contained in:
Sergey Ponomarev 2023-08-09 01:44:39 +03:00 committed by Florian Eckert
parent 48a2611fb0
commit a06ca47911
5 changed files with 689 additions and 0 deletions

View file

@ -0,0 +1,12 @@
# See /LICENSE for more information.
# This is free software, licensed under the Apache License, Version 2.0 .
#
include $(TOPDIR)/rules.mk
LUCI_TITLE:=LuCI app for email server configuration (EmailRelay)
LUCI_DEPENDS:=+luci-base +emailrelay
PKG_MAINTAINER:=Sergey Ponomarev <stokito@gmail.com>
include ../../luci.mk
# call BuildPackage - OpenWrt buildroot signature

View file

@ -0,0 +1,293 @@
'use strict';
'require view';
'require form';
return view.extend({
render: function () {
var docsRefAttrs = 'target="_blank" rel="noreferrer" href="https://emailrelay.sourceforge.net/';
var m, s, o;
m = new form.Map('emailrelay', _('Email Server Configuration'),
_('E-MailRelay Server Configuration.') + '<br />' +
_('For further information <a %s>check the documentation</a>')
.format('href="https://openwrt.org/docs/guide-user/services/email/emailrelay" target="_blank" rel="noreferrer"')
);
s = m.section(form.GridSection, 'emailrelay', _('Instance config'));
s.anonymous = false;
s.addremove = true;
s.nodescriptions = true;
o = s.tab('smtp_server', _('SMTP Server'));
o = s.tab('smtp_client', _('SMTP Client'));
o = s.tab('pop_server', _('POP3'));
o = s.tab('advanced', _('Advanced Settings'));
o = s.taboption('smtp_server', form.Flag, 'enabled', _('Enabled'));
o.rmempty = false;
o = s.taboption('smtp_server', form.ListValue, 'mode', _('Mode'),
_('See <a %s>Running E-MailRelay</a>')
.format(docsRefAttrs + '#userguide_md_Running_E_MailRelay"')
);
o.value('server', _('Server: receive incoming mail'));
o.value('proxy', _('Proxy: submission outgoing mail, store and forward to smarthost SMTP server'));
o.value('cmdline', _('Manual command line options (deprecated)'));
o.default = 'server';
o.rmempty = false;
o = s.taboption('smtp_server', form.Value, 'port', _('SMTP Port'),
_('SMTP Port to listen for incoming emails.') + '<br />' +
_('Incoming mail by default received on <em>25</em> port.') + '<br />' +
_('Outcoming mail by usually received on <em>587</em> or <em>465</em> (TLS only) ' +
'but the <em>25</em> is also used often.')
);
o.datatype = 'port';
o.default = '25';
o = s.taboption('smtp_server', form.Flag, 'remote_clients', _('Allow remote clients'),
_('Allow connections from the public internet.') + '<br />' +
_('<b>You may receive spam so be careful</b>.') + '<br />' +
_('Enable ports in firewall.') + '<br />' +
_('See <a %s>--remote-clients</a>')
.format(docsRefAttrs + '#__remote_clients"')
);
o.modalonly = true;
o.default = '0';
o = s.taboption('smtp_server', form.Flag, 'anonymous', _('Anonymous'),
_('Reduce the amount of information leaked to remote clients.') + '<br />' +
_('See <a %s>--anonymous</a>')
.format(docsRefAttrs + '#__anonymous"')
);
o.modalonly = true;
o.default = '0';
o = s.taboption('smtp_server', form.Value, 'domain', _('Domain'),
_('Specifies the server\'s domain name that is used in SMTP EHLO.') + '<br />' +
_('By default, the local hostname is used.') + '<br />' +
_('See <a %s>--domain</a>')
.format(docsRefAttrs + '#__domain"')
);
o.datatype = 'hostname';
o.optional = true;
o.rmempty = false;
o.depends('anonymous', '0');
o = s.taboption('smtp_server', form.FileUpload, 'server_auth', _('Auth file'),
_('Server/proxy authorization file.') + '<br />' +
_('See <a %s>Authentication</a>')
.format(docsRefAttrs + '#reference_md_Authentication"')
);
o.datatype = 'file';
o.root_directory = '/';
o.default = '/etc/emailrelay.auth';
o.optional = true;
o.rmempty = true;
o.modalonly = true;
o = s.taboption('smtp_server', form.Flag, 'server_tls', _('Enable TLS for server'),
_('Use TLS encryption for SMTP and POP connections.') + '<br />' +
_('Configure <a %s>acme.sh to issue a TLS cert</a>.')
.format('href="https://openwrt.org/docs/guide-user/services/tls/acmesh" target="_blank" rel="noreferrer"') + '<br />' +
_('See <a %s>TLS encryption</a>')
.format(docsRefAttrs + '#reference_md_TLS_encryption"')
);
o.default = '0';
o.optional = true;
o.rmempty = true;
o.modalonly = true;
o = s.taboption('smtp_server', form.FileUpload, 'server_tls_key', _('TLS private key'),
_('Path to TLS private key.') + '<br />' +
_('E.g. ') + '<code>/etc/ssl/acme/example.com.key</code>'
);
o.datatype = 'file';
o.root_directory = '/';
o.optional = true;
o.rmempty = true;
o.modalonly = true;
o.depends('server_tls', '1');
o = s.taboption('smtp_server', form.FileUpload, 'server_tls_certificate', _('TLS certificate'),
_('Path to TLS cert.') + '<br />' +
_('E.g. ') + '<code>/etc/ssl/acme/example.com.fullchain.crt</code>'
);
o.datatype = 'file';
o.root_directory = '/';
o.optional = true;
o.rmempty = false;
o.modalonly = true;
o.depends('server_tls', '1');
o = s.taboption('smtp_server', form.Value, 'server_tls_verify', _('CA certificate'),
_('Verify an SMTP and POP client\'s certificates ' +
'against trusted CA certificates in the specified file or directory.') + '<br />' +
_('In many use cases this should be your self-signed root certificate.') + '<br />' +
_('Use <code>&lt;default&gt;</code> to use the system trusted CAs.')
);
o.datatype = 'or(file, directory, "<default>")';
o.default = '<default>';
o.optional = true;
o.rmempty = false;
o.modalonly = true;
o.depends('server_tls', '1');
o = s.taboption('smtp_server', form.Value, 'spool_dir', _('Mail storage directory'),
_('The directory used for holding received mail messages.') + '<br />' +
_('<b>Note:</b> The <code>/var/</code> is a small in-memory folder and you\'ll lose mail in reboot.') + '<br />' +
_('Instead, use a mounted disk with enough of space.')
);
o.datatype = 'directory';
o.default = '/var/spool/emailrelay';
o.optional = true;
o.rmempty = false;
o.modalonly = true;
o = s.taboption('smtp_client', form.Value, 'smarthost', _('Smarthost'),
_('The SMTP server to forward emails')
);
o.datatype = 'host';
o.optional = false;
o.rmempty = false;
o.depends('mode', 'proxy');
o = s.taboption('smtp_client', form.FileUpload, 'client_auth', _('Client authorization file'),
_('A file that contains credentials for SMTP smarthost client.') + '<br />' +
_('See <a %s>Authentication</a>')
.format(docsRefAttrs + '#reference_md_Authentication"')
);
o.datatype = 'file';
o.root_directory = '/';
o.default = '/etc/emailrelay.auth';
o.optional = true;
o.rmempty = false;
o.modalonly = true;
o.depends('mode', 'proxy');
o = s.taboption('smtp_client', form.Flag, 'client_tls', _('Enable SMTP client TLS'),
_('Use TLS encryption for SMTP proxy client.') + '<br />' +
_('See example for <a %s>Gmail</a>')
.format(docsRefAttrs + '#userguide_md_Google_mail"')
);
o.default = '0';
o.optional = true;
o.rmempty = false;
o.modalonly = true;
o.depends('mode', 'proxy');
o = s.taboption('smtp_client', form.FileUpload, 'client_tls_key', _('TLS private key'),
_('Path to TLS private key.')
);
o.datatype = 'file';
o.root_directory = '/';
o.optional = true;
o.rmempty = true;
o.modalonly = true;
o.depends('client_tls', '1');
o = s.taboption('smtp_client', form.FileUpload, 'client_tls_certificate', _('TLS certificate'),
_('Path to TLS cert.')
);
o.datatype = 'file';
o.root_directory = '/';
o.optional = true;
o.rmempty = false;
o.modalonly = true;
o.depends('client_tls', '1');
o = s.taboption('smtp_client', form.Value, 'client_tls_verify', _('CA certificate'),
_('Verify an SMTP server\'s certificate ' +
'against trusted CA certificates in the specified file or directory.') + '<br />' +
_('Use <code>&lt;default&gt;</code> to use the system trusted CAs.')
);
o.datatype = 'or(file, directory, "<default>")';
o.default = '<default>';
o.optional = true;
o.rmempty = false;
o.modalonly = true;
o.depends('client_tls', '1');
o = s.taboption('pop_server', form.Flag, 'pop', _('Enable POP3'),
_('The POP3 used to fetch a mail.') + '<br />' +
_('See <a %s>Running as a POP server</a>')
.format(docsRefAttrs + '#userguide_md_Running_as_a_POP_server"')
);
o.default = '0';
o.optional = true;
o.rmempty = false;
o.modalonly = true;
o.depends('mode', 'server');
o = s.taboption('pop_server', form.FileUpload, 'pop_auth', _('POP Auth file'),
_('A file containing POP accounts and their credentials.')
);
o.datatype = 'file';
o.root_directory = '/';
o.default = '/etc/emailrelay.auth';
o.optional = true;
o.rmempty = false;
o.modalonly = true;
o.depends('pop', '1');
o = s.taboption('pop_server', form.Flag, 'pop_by_name', _('POP by name'),
_('Modifies the spool directory used by the POP server to be a sub-directory ' +
'with the same name as the POP authentication user-id.')
);
o.default = '1';
o.optional = true;
o.rmempty = false;
o.modalonly = true;
o.depends('pop', '1');
o = s.taboption('advanced', form.Value, 'dnsbl', _('DNSBL'),
_('<a %s>DNS Block List (DNSBL)</a> used to block connections from known spammers.')
.format('href="https://en.wikipedia.org/wiki/DNSBL" target="_blank" rel="noreferrer"') + '<br />' +
_('Starts with the transport DNS server\'s address:port, a timeout in milliseconds, a rejection threshold and list of DNSBL servers.') + '<br />' +
_('E.g. ') + '<code>127.0.0.1:53,5000,1,zen.spamhaus.org,bl.mailspike.net</code><br />' +
_('If the threshold number of servers deny the incoming connection\'s network address then it\'s dropped.') + '<br />' +
_('A threshold of zero is useful for testing and means only to log a result code but allow a connection.') + '<br />' +
_('See <a %s>Connection blocking</a>')
.format(docsRefAttrs + '#reference_md_Connection_blocking"')
);
o.datatype = 'string';
o.optional = true;
o.rmempty = true;
o.modalonly = true;
o = s.taboption('advanced', form.Value, 'address_verifier', _('Address verifier'),
_('Runs the specified external program to verify a message recipient\'s email address.') + '<br />' +
_('See <a %s>Address verification</a>')
.format(docsRefAttrs + '#reference_md_Address_verification"')
);
// o.default = "allow:/etc/emailrelay.auth";
o.optional = true;
o.rmempty = false;
o.modalonly = true;
o = s.taboption('advanced', form.Value, 'filter', _('Filter'),
_('Runs the specified external filter program whenever a mail message is stored.') + '<br />' +
_('See <a %s>--filter</a>')
.format(docsRefAttrs + '#__filter"')
);
o.optional = true;
o.rmempty = false;
o.modalonly = true;
o = s.taboption('advanced', form.Value, 'extra_cmdline', _('Extra command line options'),
_('Specify additional arguments that should be passed to the EmailRelay.') + '<br />' +
_('See <a %s>Command line reference</a>')
.format(docsRefAttrs + '#reference_md_Reference"')
);
o.optional = true;
o.rmempty = false;
o.modalonly = true;
o.modalonly = true;
return m.render();
},
});

View file

@ -0,0 +1,357 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:248
msgid ""
"<a %s>DNS Block List (DNSBL)</a> used to block connections from known "
"spammers."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:139
msgid ""
"<b>Note:</b> The <code>/var/</code> is a small in-memory folder and you'll "
"lose mail in reboot."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:51
msgid "<b>You may receive spam so be careful</b>."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:226
msgid "A file containing POP accounts and their credentials."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:158
msgid "A file that contains credentials for SMTP smarthost client."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:253
msgid ""
"A threshold of zero is useful for testing and means only to log a result "
"code but allow a connection."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:262
msgid "Address verifier"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:25
msgid "Advanced Settings"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:50
msgid "Allow connections from the public internet."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:49
msgid "Allow remote clients"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:59
msgid "Anonymous"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:78
msgid "Auth file"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:69
msgid "By default, the local hostname is used."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:124
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:201
msgid "CA certificate"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:157
msgid "Client authorization file"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:92
msgid "Configure <a %s>acme.sh to issue a TLS cert</a>."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:247
msgid "DNSBL"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:67
msgid "Domain"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:11
msgid "E-MailRelay Server Configuration."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:104
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:115
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:251
msgid "E.g."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:10
msgid "Email Server Configuration"
msgstr ""
#: applications/luci-app-email/root/usr/share/luci/menu.d/luci-app-email.json:3
msgid "Email server"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:214
msgid "Enable POP3"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:170
msgid "Enable SMTP client TLS"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:90
msgid "Enable TLS for server"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:52
msgid "Enable ports in firewall."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:27
msgid "Enabled"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:281
msgid "Extra command line options"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:272
msgid "Filter"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:12
msgid "For further information <a %s>check the documentation</a>"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:252
msgid ""
"If the threshold number of servers deny the incoming connection's network "
"address then it's dropped."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:127
msgid "In many use cases this should be your self-signed root certificate."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:42
msgid "Incoming mail by default received on <em>25</em> port."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:16
msgid "Instance config"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:140
msgid "Instead, use a mounted disk with enough of space."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:137
msgid "Mail storage directory"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:36
msgid "Manual command line options (deprecated)"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:30
msgid "Mode"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:237
msgid ""
"Modifies the spool directory used by the POP server to be a sub-directory "
"with the same name as the POP authentication user-id."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:43
msgid ""
"Outcoming mail by usually received on <em>587</em> or <em>465</em> (TLS "
"only) but the <em>25</em> is also used often."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:225
msgid "POP Auth file"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:236
msgid "POP by name"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:24
msgid "POP3"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:114
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:192
msgid "Path to TLS cert."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:103
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:182
msgid "Path to TLS private key."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:35
msgid ""
"Proxy: submission outgoing mail, store and forward to smarthost SMTP server"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:60
msgid "Reduce the amount of information leaked to remote clients."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:273
msgid ""
"Runs the specified external filter program whenever a mail message is stored."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:263
msgid ""
"Runs the specified external program to verify a message recipient's email "
"address."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:23
msgid "SMTP Client"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:40
msgid "SMTP Port"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:41
msgid "SMTP Port to listen for incoming emails."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:22
msgid "SMTP Server"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:61
msgid "See <a %s>--anonymous</a>"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:70
msgid "See <a %s>--domain</a>"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:274
msgid "See <a %s>--filter</a>"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:53
msgid "See <a %s>--remote-clients</a>"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:264
msgid "See <a %s>Address verification</a>"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:80
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:159
msgid "See <a %s>Authentication</a>"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:283
msgid "See <a %s>Command line reference</a>"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:254
msgid "See <a %s>Connection blocking</a>"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:31
msgid "See <a %s>Running E-MailRelay</a>"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:216
msgid "See <a %s>Running as a POP server</a>"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:94
msgid "See <a %s>TLS encryption</a>"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:172
msgid "See example for <a %s>Gmail</a>"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:79
msgid "Server/proxy authorization file."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:34
msgid "Server: receive incoming mail"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:149
msgid "Smarthost"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:68
msgid "Specifies the server's domain name that is used in SMTP EHLO."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:282
msgid "Specify additional arguments that should be passed to the EmailRelay."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:250
msgid ""
"Starts with the transport DNS server's address:port, a timeout in "
"milliseconds, a rejection threshold and list of DNSBL servers."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:113
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:191
msgid "TLS certificate"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:102
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:181
msgid "TLS private key"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:215
msgid "The POP3 used to fetch a mail."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:150
msgid "The SMTP server to forward emails"
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:138
msgid "The directory used for holding received mail messages."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:128
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:204
msgid "Use <code>&lt;default&gt;</code> to use the system trusted CAs."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:91
msgid "Use TLS encryption for SMTP and POP connections."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:171
msgid "Use TLS encryption for SMTP proxy client."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:125
msgid ""
"Verify an SMTP and POP client's certificates against trusted CA certificates "
"in the specified file or directory."
msgstr ""
#: applications/luci-app-email/htdocs/luci-static/resources/view/email/emailrelay.js:202
msgid ""
"Verify an SMTP server's certificate against trusted CA certificates in the "
"specified file or directory."
msgstr ""

View file

@ -0,0 +1,13 @@
{
"admin/services/email": {
"title": "Email server",
"order": 50,
"action": {
"type": "view",
"path": "email/emailrelay"
},
"depends": {
"acl": [ "luci-app-email" ]
}
}
}

View file

@ -0,0 +1,14 @@
{
"luci-app-email": {
"read": {
"uci": [
"emailrelay"
]
},
"write": {
"uci": [
"emailrelay"
]
}
}
}