Commit 05a0cfc3 authored by lpsolit%gmail.com's avatar lpsolit%gmail.com

Bug 304005: Implement SMTP authentication support for email notifications -…

Bug 304005: Implement SMTP authentication support for email notifications - Patch by Fré©ric Buclin <LpSolit@gmail.com> r=mkanat a=LpSolit
parent 7c6954f9
...@@ -50,7 +50,7 @@ use base qw(Exporter); ...@@ -50,7 +50,7 @@ use base qw(Exporter);
check_opsys check_shadowdb check_urlbase check_webdotbase check_opsys check_shadowdb check_urlbase check_webdotbase
check_netmask check_user_verify_class check_image_converter check_netmask check_user_verify_class check_image_converter
check_mail_delivery_method check_notification check_timezone check_utf8 check_mail_delivery_method check_notification check_timezone check_utf8
check_bug_status check_bug_status check_smtp_auth
); );
# Checking functions for the various values # Checking functions for the various values
...@@ -337,6 +337,14 @@ sub check_timezone { ...@@ -337,6 +337,14 @@ sub check_timezone {
return ""; return "";
} }
sub check_smtp_auth {
my $username = shift;
if ($username) {
eval "require Authen::SASL";
return "Error requiring Authen::SASL: '$@'" if $@;
}
return "";
}
# OK, here are the parameter definitions themselves. # OK, here are the parameter definitions themselves.
# #
...@@ -354,6 +362,8 @@ sub check_timezone { ...@@ -354,6 +362,8 @@ sub check_timezone {
# The type value can be one of the following: # The type value can be one of the following:
# #
# t -- A short text entry field (suitable for a single line) # t -- A short text entry field (suitable for a single line)
# p -- A short text entry field (as with type = 't'), but the string is
# replaced by asterisks (appropriate for passwords)
# l -- A long text field (suitable for many lines) # l -- A long text field (suitable for many lines)
# b -- A boolean value (either 1 or 0) # b -- A boolean value (either 1 or 0)
# m -- A list of values, with many selectable (shows up as a select box) # m -- A list of values, with many selectable (shows up as a select box)
......
...@@ -69,6 +69,17 @@ sub get_param_list { ...@@ -69,6 +69,17 @@ sub get_param_list {
default => 'localhost' default => 'localhost'
}, },
{ {
name => 'smtp_username',
type => 't',
default => '',
checker => \&check_smtp_auth
},
{
name => 'smtp_password',
type => 'p',
default => ''
},
{
name => 'smtp_debug', name => 'smtp_debug',
type => 'b', type => 'b',
default => 0 default => 0
......
...@@ -170,6 +170,12 @@ sub OPTIONAL_MODULES { ...@@ -170,6 +170,12 @@ sub OPTIONAL_MODULES {
feature => 'LDAP Authentication' feature => 'LDAP Authentication'
}, },
{ {
package => 'SASL-Authen',
module => 'Authen::SASL',
version => 0,
feature => 'SMTP Authentication'
},
{
package => 'RadiusPerl', package => 'RadiusPerl',
module => 'Authen::Radius', module => 'Authen::Radius',
version => 0, version => 0,
......
...@@ -124,6 +124,8 @@ sub MessageToMTA { ...@@ -124,6 +124,8 @@ sub MessageToMTA {
if ($method eq "SMTP") { if ($method eq "SMTP") {
push @args, Host => Bugzilla->params->{"smtpserver"}, push @args, Host => Bugzilla->params->{"smtpserver"},
username => Bugzilla->params->{"smtp_username"},
password => Bugzilla->params->{"smtp_password"},
Hello => $hostname, Hello => $hostname,
Debug => Bugzilla->params->{'smtp_debug'}; Debug => Bugzilla->params->{'smtp_debug'};
} }
......
...@@ -30,8 +30,11 @@ ...@@ -30,8 +30,11 @@
<dd>[% panel.param_descs.${param.name} FILTER none %] <dd>[% panel.param_descs.${param.name} FILTER none %]
<p> <p>
[% IF param.type == "t" %] [% IF param.type == "t" %]
<input size="80" name="[% param.name FILTER html %]" <input type="text" size="80" name="[% param.name FILTER html %]"
value="[% Param(param.name) FILTER html %]"> value="[% Param(param.name) FILTER html %]">
[% ELSIF param.type == "p" %]
<input type="password" size="80" name="[% param.name FILTER html %]"
value="[% Param(param.name) FILTER html %]" autocomplete="off">
[% ELSIF param.type == "l" %] [% ELSIF param.type == "l" %]
<textarea name="[% param.name FILTER html %]" rows="10" cols="80"> <textarea name="[% param.name FILTER html %]" rows="10" cols="80">
[% Param(param.name) FILTER html %]</textarea> [% Param(param.name) FILTER html %]</textarea>
......
...@@ -55,6 +55,12 @@ ...@@ -55,6 +55,12 @@
smtpserver => "The SMTP server address (if using SMTP for mail delivery).", smtpserver => "The SMTP server address (if using SMTP for mail delivery).",
smtp_username => "The username to pass to the SMTP server for SMTP authentication. " _
"Leave this field empty if your SMTP server doesn't require authentication.",
smtp_password => "The password to pass to the SMTP server for SMTP authentication. " _
"This field has no effect if the smtp_username parameter is left empty.",
smtp_debug => "If enabled, this will print detailed information to your" _ smtp_debug => "If enabled, this will print detailed information to your" _
" web server's error log about the communication between" _ " web server's error log about the communication between" _
" $terms.Bugzilla and your SMTP server. You can use this to" _ " $terms.Bugzilla and your SMTP server. You can use this to" _
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment