blob: e07273dbf2a5c1e099ebbdfce351f001693584d7 [file] [log] [blame]
<?xml version="1.0"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<document>
<properties>
<title>Fulcrum CommonsEmail Service</title>
<author email="siegfried.goeschl@it20one.at">Siegfried Goeschl</author>
</properties>
<body>
<section name="Technical">
<subsection name="Complexity">
<p>
Your first impression might be that the implementation is
overly complicated - and yes, you are right. On the other
hand sending emails is our core business and we regularly
have to do the following things
<ul>
<li>Signing emails and/or attachment with X.509 certificates</li>
<li>Figuring out why sending en email goes wrong</li>
<li>
Archving the emails being sent using the file system, database or commercial archiving systems
</li>
</ul>
</p>
</subsection>
<subsection name="Domain Centric Approach">
<p>
The configuration of the services is centered around domains whereas
a domain usually maps to the mail address of the sender. A domain
contains all relevant configuration information for the email being
created or sent.
</p>
</subsection>
<subsection name="Application Hooks">
<p>
The service provide methods which can be overriden by a derived class.
Since the author has no idea about the required configuration needed by
a derived class the CommonsEmailDomainEntry allows access to the
corresponding configuration instance.
</p>
</subsection>
<subsection name="Determining a Domain">
<p>
The domain is determined using the following steps
<ul>
<li>take the domain matching the sender's email address (e.g. foo@bar.com)</li>
<li>take the domain matching the sender's domain address (e.g. bar.com)</li>
<li>take the default domain</li>
</ul>
</p>
</subsection>
</section>
</body>
</document>