Commit 186b4916 authored by Frank Bergmann's avatar Frank Bergmann

- Updated to OpenACS 5.9.1

parent eef7c813
...@@ -9,19 +9,19 @@ ...@@ -9,19 +9,19 @@
<implements-subsite-p>f</implements-subsite-p> <implements-subsite-p>f</implements-subsite-p>
<inherit-templates-p>t</inherit-templates-p> <inherit-templates-p>t</inherit-templates-p>
<version name="5.9.0" url="http://openacs.org/repository/download/apm/acs-mail-lite-5.9.0.apm"> <version name="5.9.1" url="http://openacs.org/repository/download/apm/acs-mail-lite-5.9.1.apm">
<owner url="mailto:malte.sussdorff@cognovis.de">Malte Sussdorff</owner> <owner url="mailto:malte.sussdorff@cognovis.de">Malte Sussdorff</owner>
<owner url="mailto:timo@studio-k4.de">Timo Hentschel</owner> <owner url="mailto:timo@studio-k4.de">Timo Hentschel</owner>
<summary>Simplified reliable email transmission with bounce management.</summary> <summary>Simplified reliable email transmission with bounce management.</summary>
<release-date>2015-10-04</release-date> <release-date>2017-08-06</release-date>
<vendor url="http://www.openacs.org">OpenACS</vendor> <vendor url="http://www.openacs.org">OpenACS</vendor>
<description format="text/html">This package provides a service for sending messages, queueing messages in the database to ensure reliable sending and make sending a message 'transactional'. Replacement for acs-mail.</description> <description format="text/html">This package provides a service for sending messages, queueing messages in the database to ensure reliable sending and make sending a message 'transactional'. Replacement for acs-mail.</description>
<maturity>3</maturity> <maturity>3</maturity>
<provides url="acs-mail-lite" version="5.9.0"/> <provides url="acs-mail-lite" version="5.9.1"/>
<requires url="acs-kernel" version="5.9.0"/> <requires url="acs-kernel" version="5.9.1"/>
<requires url="acs-service-contract" version="5.9.0"/> <requires url="acs-service-contract" version="5.9.1"/>
<requires url="acs-tcl" version="5.9.0"/> <requires url="acs-tcl" version="5.9.1"/>
<callbacks> <callbacks>
<callback type="after-upgrade" proc="acs_mail_lite::after_upgrade"/> <callback type="after-upgrade" proc="acs_mail_lite::after_upgrade"/>
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
Set this parameter to the root of your filesystem will disable this restriction. Set this parameter to the root of your filesystem will disable this restriction.
Default for the empty value of this parameter will be to allow only files into the temporary folder of the system, as in '[ns_tmpdir]'" section_name="email"/> Default for the empty value of this parameter will be to allow only files into the temporary folder of the system, as in '[ns_tmpdir]'" section_name="email"/>
<parameter scope="instance" datatype="string" min_n_values="1" max_n_values="1" name="FixedFont" description="Font definition (after the font tag) that will always be wrapped around HTML e-mail. Example: face=Verdana size=2. Default is empty" section_name="email"/> <parameter scope="instance" datatype="string" min_n_values="1" max_n_values="1" name="FixedFont" description="Font definition (after the font tag) that will always be wrapped around HTML e-mail. Example: face=Verdana size=2. Default is empty" section_name="email"/>
<parameter scope="instance" datatype="string" min_n_values="1" max_n_values="1" name="FixedSenderEmail" description="Email addres that will be always the email stored in the sender. Default is empty" section_name="email"/> <parameter scope="instance" datatype="string" min_n_values="1" max_n_values="1" name="FixedSenderEmail" description="Email address that will be always the email stored in the sender. Default is empty" section_name="email"/>
<parameter scope="instance" datatype="number" min_n_values="1" max_n_values="1" name="FolderID" description="Folder ID of a folder in the content repository that contains files that can be included using checkboxes in each e-mail send out of the system. This effects /lib/email" section_name="email"/> <parameter scope="instance" datatype="number" min_n_values="1" max_n_values="1" name="FolderID" description="Folder ID of a folder in the content repository that contains files that can be included using checkboxes in each e-mail send out of the system. This effects /lib/email" section_name="email"/>
<parameter scope="instance" datatype="string" min_n_values="1" max_n_values="1" name="MMEncodeBin" default="/usr/bin/mmencode" description="Location of mmencode executable." section_name="email"/> <parameter scope="instance" datatype="string" min_n_values="1" max_n_values="1" name="MMEncodeBin" default="/usr/bin/mmencode" description="Location of mmencode executable." section_name="email"/>
<parameter scope="instance" datatype="number" min_n_values="1" max_n_values="1" name="MaxBounceCount" default="10" description="Number of bounced emails after resulting in disabling an email-address" section_name="email"/> <parameter scope="instance" datatype="number" min_n_values="1" max_n_values="1" name="MaxBounceCount" default="10" description="Number of bounced emails after resulting in disabling an email-address" section_name="email"/>
......
...@@ -3,8 +3,6 @@ ...@@ -3,8 +3,6 @@
<msg key="Associated_files">Verknpfte Dateien:</msg> <msg key="Associated_files">Verknpfte Dateien:</msg>
<msg key="BCC">BCC</msg> <msg key="BCC">BCC</msg>
<msg key="Bounce_disabled">Bouncing abgestellt. Sie bekommen wieder normal Email</msg>
<msg key="Bouncing_users">Bouncende Benutzer</msg>
<msg key="CC">CC</msg> <msg key="CC">CC</msg>
<msg key="cc_help">Liste von E-Mail Adressen durch &#34;;&#34; getrennt an die eine Kopie der E-Mail geschickt werden soll.</msg> <msg key="cc_help">Liste von E-Mail Adressen durch &#34;;&#34; getrennt an die eine Kopie der E-Mail geschickt werden soll.</msg>
<msg key="check_uncheck">Alle/Keine auswhlen</msg> <msg key="check_uncheck">Alle/Keine auswhlen</msg>
...@@ -16,7 +14,6 @@ ...@@ -16,7 +14,6 @@
<msg key="Send">Senden</msg> <msg key="Send">Senden</msg>
<msg key="Sender">Absender</msg> <msg key="Sender">Absender</msg>
<msg key="Subject">Betreff</msg> <msg key="Subject">Betreff</msg>
<msg key="Unbounce">Unbounce</msg>
<msg key="Untitled">Unbenannt</msg> <msg key="Untitled">Unbenannt</msg>
<msg key="Upload_file">Datei hinzufgen</msg> <msg key="Upload_file">Datei hinzufgen</msg>
<msg key="Your_message_was_sent_to">Ihre Nachricht wurde an die folgende Empfnger geschickt: %recipients%</msg> <msg key="Your_message_was_sent_to">Ihre Nachricht wurde an die folgende Empfnger geschickt: %recipients%</msg>
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<msg key="Bounce_disabled">Bouncing recorded as disabled. You will receive E-Mails again.</msg> <msg key="Bounce_disabled">Bouncing recorded as disabled. You will receive E-Mails again.</msg>
<msg key="Bouncing_users">Bouncing users</msg> <msg key="Bouncing_users">Bouncing users</msg>
<msg key="CC">CC</msg> <msg key="CC">CC</msg>
<msg key="cc_help">Send copy to multiple addresses separated by &#34;;&#34;</msg> <msg key="cc_help">Send copy to multiple addresses separated by &quot;;&quot;</msg>
<msg key="check_uncheck">Check/Uncheck</msg> <msg key="check_uncheck">Check/Uncheck</msg>
<msg key="lt_there_was_an_error_processing">There was an error processing this request.</msg> <msg key="lt_there_was_an_error_processing">There was an error processing this request.</msg>
<msg key="Message">Message</msg> <msg key="Message">Message</msg>
......
...@@ -2,9 +2,8 @@ ...@@ -2,9 +2,8 @@
<message_catalog package_key="acs-mail-lite" locale="nl_NL" charset="ISO-8859-1"> <message_catalog package_key="acs-mail-lite" locale="nl_NL" charset="ISO-8859-1">
<msg key="Associated_files">Verbintenis met de bestanden:</msg> <msg key="Associated_files">Verbintenis met de bestanden:</msg>
<msg key="BCC">BCC</msg>
<msg key="CC">CC</msg> <msg key="CC">CC</msg>
<msg key="cc_help">Stuur kopie aan meerdere adressen gescheiden door &#34;;&#34;</msg> <msg key="cc_help">Stuur kopie aan meerdere adressen gescheiden door &quot;;&quot;</msg>
<msg key="check_uncheck">Aanvinken/Afvinken</msg> <msg key="check_uncheck">Aanvinken/Afvinken</msg>
<msg key="lt_there_was_an_error_processing">Er is een fout opgetreden tijdens het verwerken van dit verzoek.</msg> <msg key="lt_there_was_an_error_processing">Er is een fout opgetreden tijdens het verwerken van dit verzoek.</msg>
<msg key="Message">Bericht</msg> <msg key="Message">Bericht</msg>
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<msg key="Associated_files">Powiązane Pliki:</msg> <msg key="Associated_files">Powiązane Pliki:</msg>
<msg key="CC">CC</msg> <msg key="CC">CC</msg>
<msg key="cc_help">Wyślij kopie pod wiele adresów rozdzielając je &#34;;&#34;</msg> <msg key="cc_help">Wyślij kopie pod wiele adresów rozdzielając je &quot;;&quot;</msg>
<msg key="check_uncheck">Zaznacz/Odznacz</msg> <msg key="check_uncheck">Zaznacz/Odznacz</msg>
<msg key="lt_there_was_an_error_processing">Wystąpił błąd.</msg> <msg key="lt_there_was_an_error_processing">Wystąpił błąd.</msg>
<msg key="Message">Komunikat</msg> <msg key="Message">Komunikat</msg>
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<msg key="Associated_files">Arquivos Associados:</msg> <msg key="Associated_files">Arquivos Associados:</msg>
<msg key="CC">CC</msg> <msg key="CC">CC</msg>
<msg key="cc_help">Enviar cpia para mltiplos endereos de email separados por &#34;;&#34;</msg> <msg key="cc_help">Enviar cpia para mltiplos endereos de email separados por &quot;;&quot;</msg>
<msg key="check_uncheck">Marcar/Desmarcar</msg> <msg key="check_uncheck">Marcar/Desmarcar</msg>
<msg key="lt_there_was_an_error_processing">Ocorreu um erro ao processar esta solicitao.</msg> <msg key="lt_there_was_an_error_processing">Ocorreu um erro ao processar esta solicitao.</msg>
<msg key="Message">Mensagem</msg> <msg key="Message">Mensagem</msg>
......
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
<message_catalog package_key="acs-mail-lite" locale="ru_RU" charset="utf-8"> <message_catalog package_key="acs-mail-lite" locale="ru_RU" charset="utf-8">
<msg key="Associated_files">Связанные файлы:</msg> <msg key="Associated_files">Связанные файлы:</msg>
<msg key="BCC">&#34;Слепая копия&#34;</msg> <msg key="BCC">&quot;Слепая копия&quot;</msg>
<msg key="Bounce_disabled">Повторные ошибочные электронные почтовые сообщения записаны как отключенные. Вы будете получать электронные почтовые сообщения снова.</msg> <msg key="Bounce_disabled">Повторные ошибочные электронные почтовые сообщения записаны как отключенные. Вы будете получать электронные почтовые сообщения снова.</msg>
<msg key="Bouncing_users">Адресаты повторных ошибочных электронных почтовых сообщений</msg> <msg key="Bouncing_users">Адресаты повторных ошибочных электронных почтовых сообщений</msg>
<msg key="CC">Копия</msg> <msg key="CC">Копия</msg>
<msg key="cc_help">Отправить копию по нескольким адресам, разделённым с помощью &#34;;&#34;</msg> <msg key="cc_help">Отправить копию по нескольким адресам, разделённым с помощью &quot;;&quot;</msg>
<msg key="check_uncheck">Проверять/Не проверять</msg> <msg key="check_uncheck">Проверять/Не проверять</msg>
<msg key="lt_there_was_an_error_processing">Произошла ошибка в обработке этого запроса.</msg> <msg key="lt_there_was_an_error_processing">Произошла ошибка в обработке этого запроса.</msg>
<msg key="Message">Сообщение</msg> <msg key="Message">Сообщение</msg>
......
...@@ -25,7 +25,9 @@ CREATE TABLE acs_mail_lite_queue ( ...@@ -25,7 +25,9 @@ CREATE TABLE acs_mail_lite_queue (
references apm_packages, references apm_packages,
file_ids varchar(4000), file_ids varchar(4000),
filesystem_files varchar(4000), filesystem_files varchar(4000),
delete_filesystem_files_p boolean, delete_filesystem_files_p char(1)
constraint amlq_del_fs_files_p_ck
check (delete_filesystem_files_p in ('t','f')),
mime_type varchar(200), mime_type varchar(200),
object_id integer, object_id integer,
no_callback_p char(1) no_callback_p char(1)
......
...@@ -6,4 +6,6 @@ ...@@ -6,4 +6,6 @@
-- new columns -- new columns
alter table acs_mail_lite_queue add filesystem_files varchar(4000); alter table acs_mail_lite_queue add filesystem_files varchar(4000);
alter table acs_mail_lite_queue add delete_filesystem_files_p boolean; alter table acs_mail_lite_queue add delete_filesystem_files_p char(1)
\ No newline at end of file constraint amlq_del_fs_files_p_ck
check (delete_filesystem_files_p in ('t','f'));
...@@ -24,32 +24,25 @@ ad_proc -public -callback acs_mail_lite::send { ...@@ -24,32 +24,25 @@ ad_proc -public -callback acs_mail_lite::send {
{-filesystem_files} {-filesystem_files}
{-delete_filesystem_files_p} {-delete_filesystem_files_p}
{-object_id} {-object_id}
{-status ok}
{-errorMsg ""}
} { } {
Callback for executing code after an email has been send using the send mechanism. Callback for executing code after an email has been send using the send mechanism.
@param package_id Package ID of the sending package @param package_id Package ID of the sending package
@param message_id the generated message_id for this mail @param message_id the generated message_id for this mail
@param from_addr email of the sender @param from_addr email of the sender
@param to_addr list of emails to whom did we send this email @param to_addr list of emails to whom did we send this email
@param body Text body of the email @param body Text body of the email
@param mime_type Mime type of the email body
@param mime_type Mime type of the email body
@param subject of the email @param subject of the email
@param cc_addr list of emails to whom did we send this email in CC @param cc_addr list of emails to whom did we send this email in CC
@param bcc_addr list of emails to whom did we send this email in BCC @param bcc_addr list of emails to whom did we send this email in BCC
@param file_ids List of file ids sent as attachments. @param file_ids List of file ids sent as attachments.
@param object_id The ID of the object that is responsible for sending the mail in the first place
@param object_id The ID of the object that is responsible for sending the mail in the first place @param status Status of the send operation ("ok" or "error")
@param errorMsg Error Details
} - } -
ad_proc -public -callback acs_mail_lite::incoming_email { ad_proc -public -callback acs_mail_lite::incoming_email {
...@@ -99,7 +92,7 @@ ad_proc -public -callback acs_mail_lite::incoming_email -impl acs-mail-lite { ...@@ -99,7 +92,7 @@ ad_proc -public -callback acs_mail_lite::incoming_email -impl acs-mail-lite {
upvar $array email upvar $array email
set to [acs_mail_lite::parse_email_address -email $email(to)] set to [acs_mail_lite::parse_email_address -email $email(to)]
ns_log Debug "acs_mail_lite::incoming_email -impl acs-mail-lite called. Recepient $to" ns_log Debug "acs_mail_lite::incoming_email -impl acs-mail-lite called. Recipient $to"
lassign [acs_mail_lite::parse_bounce_address -bounce_address $to] user_id package_id signature lassign [acs_mail_lite::parse_bounce_address -bounce_address $to] user_id package_id signature
......
...@@ -329,6 +329,7 @@ namespace eval acs_mail_lite { ...@@ -329,6 +329,7 @@ namespace eval acs_mail_lite {
-subject $subject \ -subject $subject \
-body $body \ -body $body \
-package_id $package_id \ -package_id $package_id \
-object_id $object_id \
-file_ids $file_ids \ -file_ids $file_ids \
-filesystem_files $filesystem_files \ -filesystem_files $filesystem_files \
-delete_filesystem_files_p $delete_filesystem_files_p \ -delete_filesystem_files_p $delete_filesystem_files_p \
...@@ -421,6 +422,7 @@ namespace eval acs_mail_lite { ...@@ -421,6 +422,7 @@ namespace eval acs_mail_lite {
# Decide which sender to use # Decide which sender to use
set fixed_sender [parameter::get -parameter "FixedSenderEmail" \ set fixed_sender [parameter::get -parameter "FixedSenderEmail" \
-package_id $mail_package_id] -package_id $mail_package_id]
if { $fixed_sender ne "" && !$use_sender_p} { if { $fixed_sender ne "" && !$use_sender_p} {
set from_addr $fixed_sender set from_addr $fixed_sender
...@@ -591,14 +593,16 @@ namespace eval acs_mail_lite { ...@@ -591,14 +593,16 @@ namespace eval acs_mail_lite {
set originator [bounce_address -user_id $rcpt_id \ set originator [bounce_address -user_id $rcpt_id \
-package_id $package_id \ -package_id $package_id \
-message_id $message_id] -message_id $message_id]
# fraber 2016-11-02: Overwrite fixed_sender in case we got
# issues with corporate mail gateways etc.
if { $fixed_sender ne ""} {
set originator $fixed_sender
}
# fraber 2016-11-02: Overwrite fixed_sender in case we got
# issues with corporate mail gateways etc.
if { $fixed_sender ne ""} {
set originator $fixed_sender
}
set errorMsg ""
set status ok
if { $send_mode eq "log" } { if { $send_mode eq "log" } {
# Add recipients to headers # Add recipients to headers
...@@ -616,10 +620,12 @@ namespace eval acs_mail_lite { ...@@ -616,10 +620,12 @@ namespace eval acs_mail_lite {
ns_log Notice "acs-mail-lite::send: $notice\n\n**********\nEnvelope sender: $originator\n\n$packaged\n**********" ns_log Notice "acs-mail-lite::send: $notice\n\n**********\nEnvelope sender: $originator\n\n$packaged\n**********"
} else { } else {
acs_mail_lite::smtp -multi_token $tokens \ if {[catch {acs_mail_lite::smtp -multi_token $tokens \
-headers $headers_list \ -headers $headers_list \
-originator $originator -originator $originator} errorMsg]} {
set status error
}
# Close all mime tokens # Close all mime tokens
mime::finalize $tokens -subordinates all mime::finalize $tokens -subordinates all
...@@ -640,7 +646,9 @@ namespace eval acs_mail_lite { ...@@ -640,7 +646,9 @@ namespace eval acs_mail_lite {
-file_ids $file_ids \ -file_ids $file_ids \
-filesystem_files $filesystem_files \ -filesystem_files $filesystem_files \
-delete_filesystem_files_p $delete_filesystem_files_p \ -delete_filesystem_files_p $delete_filesystem_files_p \
-object_id $object_id -object_id $object_id \
-status $status \
-errorMsg $errorMsg
} }
# Attachment files can now be deleted, if so required. # Attachment files can now be deleted, if so required.
...@@ -648,9 +656,12 @@ namespace eval acs_mail_lite { ...@@ -648,9 +656,12 @@ namespace eval acs_mail_lite {
# could need to look at files for their own purposes. # could need to look at files for their own purposes.
if {[string is true $delete_filesystem_files_p]} { if {[string is true $delete_filesystem_files_p]} {
foreach f $filesystem_files { foreach f $filesystem_files {
file delete $f file delete -- $f
} }
} }
if {$status ne "ok"} {
error $errorMsg
}
} }
#--------------------------------------- #---------------------------------------
...@@ -683,7 +694,7 @@ namespace eval acs_mail_lite { ...@@ -683,7 +694,7 @@ namespace eval acs_mail_lite {
{bcc {}} {bcc {}}
} { } {
Replacement for ns_sendmail for backward compability. Replacement for ns_sendmail for backward compatibility.
} { } {
......
...@@ -19,7 +19,18 @@ namespace eval acs_mail_lite { ...@@ -19,7 +19,18 @@ namespace eval acs_mail_lite {
} { } {
set domain [parameter::get_from_package_key -package_key "acs-mail-lite" -parameter "BounceDomain"] set domain [parameter::get_from_package_key -package_key "acs-mail-lite" -parameter "BounceDomain"]
if { $domain eq "" } { if { $domain eq "" } {
regsub {http://} [ns_config [ns_driversection -driver nssock] hostname] _ domain #
# If there is no domain configured, use the configured
# hostname as domain name
#
foreach driver {nsssl nssock} {
set driver_section [ns_driversection -driver $driver]
set configured_hostname [ns_config $driver_section hostname]
if {$configured_hostname ne ""} {
set domain $configured_hostname
break
}
}
} }
return $domain return $domain
} }
...@@ -108,7 +119,7 @@ namespace eval acs_mail_lite { ...@@ -108,7 +119,7 @@ namespace eval acs_mail_lite {
} }
#let's delete the file now #let's delete the file now
if {[catch {file delete $msg} errmsg]} { if {[catch {file delete -- $msg} errmsg]} {
ns_log Error "load_mails: unable to delete queued message $msg: $errmsg" ns_log Error "load_mails: unable to delete queued message $msg: $errmsg"
} else { } else {
ns_log Debug "load_mails: deleted $msg" ns_log Debug "load_mails: deleted $msg"
...@@ -123,7 +134,7 @@ namespace eval acs_mail_lite { ...@@ -123,7 +134,7 @@ namespace eval acs_mail_lite {
} { } {
An email is splitted into several parts: headers, bodies and files lists and all headers directly. An email is splitted into several parts: headers, bodies and files lists and all headers directly.
The headers consists of a list with header names as keys and their correponding values. All keys are lower case. The headers consists of a list with header names as keys and their corresponding values. All keys are lower case.
The bodies consists of a list with two elements: content-type and content. The bodies consists of a list with two elements: content-type and content.
The files consists of a list with three elements: content-type, filename and content. The files consists of a list with three elements: content-type, filename and content.
...@@ -173,7 +184,7 @@ namespace eval acs_mail_lite { ...@@ -173,7 +184,7 @@ namespace eval acs_mail_lite {
set content [read $stream] set content [read $stream]
close $stream close $stream
ns_log error $content ns_log error $content
file delete $file file delete -- $file
return return
} }
......
...@@ -26,6 +26,10 @@ ad_proc acs_mail_lite::utils::build_subject { ...@@ -26,6 +26,10 @@ ad_proc acs_mail_lite::utils::build_subject {
the mime::word_encode proc to do it or local code (word_encode is the mime::word_encode proc to do it or local code (word_encode is
buggy in mime < 1.5.2 ) buggy in mime < 1.5.2 )
A purely tcllib based version would be
[mime::word_encode utf-8 quoted-printable $subject]
but that would miss the safety-belt for newline handling
} { } {
set charset [string toupper $charset] set charset [string toupper $charset]
...@@ -35,6 +39,20 @@ ad_proc acs_mail_lite::utils::build_subject { ...@@ -35,6 +39,20 @@ ad_proc acs_mail_lite::utils::build_subject {
# 69 = 76 - 7 where 7 is for "=?"+"?Q?+"?=" # 69 = 76 - 7 where 7 is for "=?"+"?Q?+"?="
set maxlen [expr {69 - [string length $charset]}] set maxlen [expr {69 - [string length $charset]}]
#
# Make sure, the subject line does not have surrounding white
# space/new lines
#
set subject [string trim $subject]
if {[regsub -all {[\r\n]} $subject " " s]} {
ad_log warning "subject line contains line breaks (replaced by space): '$subject' -> '$s'"
set subject $s
}
#
# set up variables for loop
#
set result "" set result ""
set line "" set line ""
set i 0 set i 0
......
<property name="context">{/doc/acs-mail-lite {Mail Services Lite}} {User Documentation for ACS Mail Lite}</property> <property name="context">{/doc/acs-mail-lite {ACS Mail Services Lite}} {User Documentation for ACS Mail Lite}</property>
<property name="doc(title)">User Documentation for ACS Mail Lite</property> <property name="doc(title)">User Documentation for ACS Mail Lite</property>
<master> <master>
<h1>User Documentation for ACS Mail Lite</h1> <h1>User Documentation for ACS Mail Lite</h1>
...@@ -14,26 +14,27 @@ location of the binary as a parameter) or SMTP to send the mail. If ...@@ -14,26 +14,27 @@ location of the binary as a parameter) or SMTP to send the mail. If
the sending fails, the mail will be placed in the outgoing queue the sending fails, the mail will be placed in the outgoing queue
again and be given another try a few minutes later when processing again and be given another try a few minutes later when processing
the queue again.</p> the queue again.</p>
<p>Each email contains an X-Envelope-From adress constructed as <p>Each email contains an X-Envelope-From address constructed as
follows:<br> follows:<br>
The adress starts with "bounce" (can be changed by a parameter) The address starts with "bounce" (can be changed by a
followed by the user_id, a hashkey and the package_id of the parameter) followed by the user_id, a hashkey and the package_id of
package instance that sent the email, separated by "-". The domain the package instance that sent the email, separated by
name of this adress can be changed with a parameter.</p> "-". The domain name of this address can be changed with
a parameter.</p>
<p>The system checks every 2 minutes (configurable) in a certain <p>The system checks every 2 minutes (configurable) in a certain
maildirectory (configurable) for newly bounced emails, so the maildirectory (configurable) for newly bounced emails, so the
mailsystem will have to place every mail to an address beginning mailsystem will have to place every mail to an address beginning
with "bounce" (or whatever the appropriate parameter says) in that with "bounce" (or whatever the appropriate parameter
directory. The system then processes each of the bounced emails, says) in that directory. The system then processes each of the
strips out the message_id and verifies the hashkey in the bounced emails, strips out the message_id and verifies the hashkey
bounce-address. After that the package-key of the package sending in the bounce-address. After that the package-key of the package
the original mail is found out by using the package_id provided in sending the original mail is found out by using the package_id
the bounce adress. With that, the system then tries to invoke a provided in the bounce address. With that, the system then tries to
callback procedure via a service contract if one is registered for invoke a callback procedure via a service contract if one is
that particular package-key. This enables each package to deal with registered for that particular package-key. This enables each
bouncing mails on their own - probably logging this in special package to deal with bouncing mails on their own - probably logging
tables. ACS Mail Lite then logs the event of a bounced mail of that this in special tables. ACS Mail Lite then logs the event of a
user.</p> bounced mail of that user.</p>
<p>Every day a procedure is run that checks if an email account has <p>Every day a procedure is run that checks if an email account has
to be disabled from receiving any more mail. This is done the to be disabled from receiving any more mail. This is done the
following way:</p> following way:</p>
...@@ -59,14 +60,15 @@ To use this system here is a quick guide how to do it with postfix. ...@@ -59,14 +60,15 @@ To use this system here is a quick guide how to do it with postfix.
<li>Set "recipient_delimiter" to " - "</li><li>Set "home_mailbox" to "Maildir/"</li><li>Make sure that /etc/postfix/aliases is hashed for the alias <li>Set "recipient_delimiter" to " - "</li><li>Set "home_mailbox" to "Maildir/"</li><li>Make sure that /etc/postfix/aliases is hashed for the alias
database</li> database</li>
</ul> </ul>
</li><li>Edit /etc/postfix/aliases. Redirect all mail to "bounce" (if </li><li>Edit /etc/postfix/aliases. Redirect all mail to
you leave the parameter as it was) to "nsadmin" (in case you only "bounce" (if you leave the parameter as it was) to
run one server).</li> "nsadmin" (in case you only run one server).</li>
</ul> </ul>
In case of multiple services on one system, create a bounce email In case of multiple services on one system, create a bounce email
for each of them (e.g. changeing "bounce" to "bounce_service1") and for each of them (e.g. changeing "bounce" to
create a new user that runs the aolserver process for each of them. "bounce_service1") and create a new user that runs the
You do not want to have service1 deal with bounces for service2. aolserver process for each of them. You do not want to have
service1 deal with bounces for service2.
<h2>Release Notes</h2> <h2>Release Notes</h2>
<p>Please file bugs in the <a href="http://openacs.org/bugtracker/openacs/">Bug Tracker</a>.</p> <p>Please file bugs in the <a href="http://openacs.org/bugtracker/openacs/">Bug Tracker</a>.</p>
...@@ -17,12 +17,12 @@ If the sending fails, the mail will be placed in the outgoing queue ...@@ -17,12 +17,12 @@ If the sending fails, the mail will be placed in the outgoing queue
again and be given another try a few minutes later when processing again and be given another try a few minutes later when processing
the queue again. the queue again.
<p> <p>
Each email contains an X-Envelope-From adress constructed as Each email contains an X-Envelope-From address constructed as
follows:<br> follows:<br>
The adress starts with "bounce" (can be changed by a parameter) The address starts with "bounce" (can be changed by a parameter)
followed by the user_id, a hashkey and the package_id of the followed by the user_id, a hashkey and the package_id of the
package instance that sent the email, separated by "-". The package instance that sent the email, separated by "-". The
domain name of this adress can be changed with a parameter. domain name of this address can be changed with a parameter.
<p> <p>
The system checks every 2 minutes (configurable) in a certain The system checks every 2 minutes (configurable) in a certain
maildirectory (configurable) for newly bounced emails, so the maildirectory (configurable) for newly bounced emails, so the
...@@ -32,7 +32,7 @@ directory. The system then processes each of the bounced emails, ...@@ -32,7 +32,7 @@ directory. The system then processes each of the bounced emails,
strips out the message_id and verifies the hashkey in the bounce-address. strips out the message_id and verifies the hashkey in the bounce-address.
After that the package-key of the package sending the original mail After that the package-key of the package sending the original mail
is found out by using the package_id provided in the bounce is found out by using the package_id provided in the bounce
adress. With that, the system then tries to invoke a callback address. With that, the system then tries to invoke a callback
procedure via a service contract if one is registered for that procedure via a service contract if one is registered for that
particular package-key. This enables each package to deal with particular package-key. This enables each package to deal with
bouncing mails on their own - probably logging this in special tables. bouncing mails on their own - probably logging this in special tables.
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<p>#acs-mail-lite.Bounce_disabled#</p> <p>#acs-mail-lite.Bounce_disabled#</p>
<p> <p>
<b>&raquo;</b> <a href="@return_url@">#acs-subsite.Continue#</a> <strong>&raquo;</strong> <a href="@return_url@">#acs-subsite.Continue#</a>
</p> </p>
......
...@@ -2,7 +2,7 @@ ad_page_contract { ...@@ -2,7 +2,7 @@ ad_page_contract {
The page restores a user from the deleted state. The page restores a user from the deleted state.
@cvs-id $Id$ @cvs-id $Id$
} { } {
{return_url {[ad_pvt_home]}} {return_url:localurl {[ad_pvt_home]}}
} }
set page_title [_ acs-mail-lite.Restore_bounce] set page_title [_ acs-mail-lite.Restore_bounce]
......
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