From 05a0cfc3eeb0b738c7e00840df7b49e162692044 Mon Sep 17 00:00:00 2001 From: "lpsolit%gmail.com" <> Date: Fri, 14 Mar 2008 05:05:34 +0000 Subject: Bug 304005: Implement SMTP authentication support for email notifications - Patch by Frédéric Buclin r=mkanat a=LpSolit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Bugzilla/Config/Common.pm | 12 +++++++++++- Bugzilla/Config/MTA.pm | 11 +++++++++++ Bugzilla/Install/Requirements.pm | 6 ++++++ Bugzilla/Mailer.pm | 2 ++ template/en/default/admin/params/common.html.tmpl | 5 ++++- template/en/default/admin/params/mta.html.tmpl | 6 ++++++ 6 files changed, 40 insertions(+), 2 deletions(-) diff --git a/Bugzilla/Config/Common.pm b/Bugzilla/Config/Common.pm index 03e97d6a1..f5f5a3fb2 100644 --- a/Bugzilla/Config/Common.pm +++ b/Bugzilla/Config/Common.pm @@ -50,7 +50,7 @@ use base qw(Exporter); check_opsys check_shadowdb check_urlbase check_webdotbase check_netmask check_user_verify_class check_image_converter 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 @@ -337,6 +337,14 @@ sub check_timezone { 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. # @@ -354,6 +362,8 @@ sub check_timezone { # The type value can be one of the following: # # 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) # b -- A boolean value (either 1 or 0) # m -- A list of values, with many selectable (shows up as a select box) diff --git a/Bugzilla/Config/MTA.pm b/Bugzilla/Config/MTA.pm index 686d5b3e4..37d99d967 100644 --- a/Bugzilla/Config/MTA.pm +++ b/Bugzilla/Config/MTA.pm @@ -68,6 +68,17 @@ sub get_param_list { type => 't', default => 'localhost' }, + { + name => 'smtp_username', + type => 't', + default => '', + checker => \&check_smtp_auth + }, + { + name => 'smtp_password', + type => 'p', + default => '' + }, { name => 'smtp_debug', type => 'b', diff --git a/Bugzilla/Install/Requirements.pm b/Bugzilla/Install/Requirements.pm index 293740e3f..65df716bc 100644 --- a/Bugzilla/Install/Requirements.pm +++ b/Bugzilla/Install/Requirements.pm @@ -169,6 +169,12 @@ sub OPTIONAL_MODULES { version => 0, feature => 'LDAP Authentication' }, + { + package => 'SASL-Authen', + module => 'Authen::SASL', + version => 0, + feature => 'SMTP Authentication' + }, { package => 'RadiusPerl', module => 'Authen::Radius', diff --git a/Bugzilla/Mailer.pm b/Bugzilla/Mailer.pm index 2702b8ff1..c002fb3db 100644 --- a/Bugzilla/Mailer.pm +++ b/Bugzilla/Mailer.pm @@ -124,6 +124,8 @@ sub MessageToMTA { if ($method eq "SMTP") { push @args, Host => Bugzilla->params->{"smtpserver"}, + username => Bugzilla->params->{"smtp_username"}, + password => Bugzilla->params->{"smtp_password"}, Hello => $hostname, Debug => Bugzilla->params->{'smtp_debug'}; } diff --git a/template/en/default/admin/params/common.html.tmpl b/template/en/default/admin/params/common.html.tmpl index 7502c909d..4fd792194 100644 --- a/template/en/default/admin/params/common.html.tmpl +++ b/template/en/default/admin/params/common.html.tmpl @@ -30,8 +30,11 @@
[% panel.param_descs.${param.name} FILTER none %]

[% IF param.type == "t" %] - + [% ELSIF param.type == "p" %] + [% ELSIF param.type == "l" %] diff --git a/template/en/default/admin/params/mta.html.tmpl b/template/en/default/admin/params/mta.html.tmpl index 904aa2a1c..800fbad9b 100644 --- a/template/en/default/admin/params/mta.html.tmpl +++ b/template/en/default/admin/params/mta.html.tmpl @@ -55,6 +55,12 @@ 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" _ " web server's error log about the communication between" _ " $terms.Bugzilla and your SMTP server. You can use this to" _ -- cgit v1.2.3-24-g4f1b