You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2018/07/05 02:14:52 UTC
[13/13] james-site git commit: Deploy new website version
Deploy new website version
Project: http://git-wip-us.apache.org/repos/asf/james-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-site/commit/e4e14366
Tree: http://git-wip-us.apache.org/repos/asf/james-site/tree/e4e14366
Diff: http://git-wip-us.apache.org/repos/asf/james-site/diff/e4e14366
Branch: refs/heads/asf-site
Commit: e4e1436605a03e9b621999b12828e220ee4b3afb
Parents: 78bf63c
Author: benwa <bt...@linagora.com>
Authored: Thu Jul 5 09:14:08 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Jul 5 09:14:08 2018 +0700
----------------------------------------------------------------------
content/contribute.html | 8 +-
content/documentation.html | 8 +-
content/download.html | 8 +-
content/feed.xml | 4 +-
content/guidelines.html | 8 +-
content/howTo/imap-server.html | 281 ++++++++
content/howTo/index.html | 166 +++++
content/howTo/mail-processing.html | 318 +++++++++
content/howTo/spf.html | 264 +++++++
.../images/guice-jpa-architecture-overview.png | Bin 0 -> 41998 bytes
content/index.html | 3 +
content/license.html | 8 +-
content/mail.html | 8 +-
content/mailbox/index.html | 8 +-
content/mailbox/mailbox-api.html | 8 +-
content/mailbox/mailbox-cassandra.html | 8 +-
content/mailbox/mailbox-hbase.html | 8 +-
content/mailbox/mailbox-jcr.html | 8 +-
content/mailbox/mailbox-jpa.html | 8 +-
content/mailbox/mailbox-maildir.html | 8 +-
content/mailbox/mailbox-memory.html | 8 +-
content/mailbox/mailbox-spring.html | 8 +-
content/mailbox/mailbox-store.html | 8 +-
content/mailbox/mailbox-tool.html | 8 +-
content/mailbox/source-code.html | 8 +-
content/mailet/ai/index.html | 8 +-
content/mailet/api/index.html | 8 +-
content/mailet/base/index.html | 8 +-
content/mailet/conf.html | 8 +-
content/mailet/crypto/conf.html | 8 +-
content/mailet/crypto/index.html | 8 +-
content/mailet/examples/standard.html | 8 +-
content/mailet/index.html | 8 +-
.../mailet/mailetdocs-maven-plugin/index.html | 8 +-
content/mailet/quickstart.html | 8 +-
content/mailet/release-notes-old.html | 8 +-
content/mailet/release-notes.html | 8 +-
content/mailet/standard/conf.html | 8 +-
content/mailet/standard/index.html | 8 +-
content/mailet/stylesheets/project.html | 8 +-
content/mailet/usage.html | 8 +-
content/mpt/index.html | 8 +-
content/mpt/release-notes.html | 8 +-
content/project-info.html | 8 +-
content/protocols/changes.html | 8 +-
content/protocols/imap4.html | 8 +-
content/protocols/index.html | 8 +-
content/protocols/pop3.html | 8 +-
content/protocols/smtp.html | 8 +-
content/protocols/source-code.html | 8 +-
content/server/advantages.html | 10 +-
content/server/archive/announcement_2_1.html | 8 +-
content/server/archive/architecture_v1_2.html | 8 +-
content/server/archive/architecture_v2_0.html | 8 +-
content/server/archive/configuration_v2_0.html | 8 +-
content/server/archive/document_archive.html | 8 +-
content/server/archive/install.html | 8 +-
content/server/archive/usingJDBC_v2.0.html | 8 +-
content/server/archive/usingLDAP_v1_2.html | 8 +-
content/server/archive/usingTLS_v1_2.html | 8 +-
content/server/config-antispam.html | 15 +-
content/server/config-cassandra.html | 17 +-
content/server/config-dnsservice.html | 23 +-
content/server/config-domainlist.html | 15 +-
content/server/config-elasticsearch.html | 15 +-
content/server/config-events.html | 15 +-
content/server/config-fetchmail.html | 15 +-
content/server/config-guice.html | 15 +-
content/server/config-imap4.html | 19 +-
content/server/config-jmap.html | 362 ++++++++++
content/server/config-listeners.html | 27 +-
content/server/config-mailbox.html | 15 +-
content/server/config-mailetcontainer.html | 15 +-
content/server/config-mailrepositorystore.html | 15 +-
content/server/config-pop3.html | 19 +-
content/server/config-quota.html | 15 +-
.../server/config-recipientrewritetable.html | 15 +-
content/server/config-sieve.html | 15 +-
content/server/config-smtp-lmtp.html | 19 +-
content/server/config-spring-jpa-postgres.html | 15 +-
content/server/config-ssl-tls.html | 15 +-
content/server/config-system.html | 19 +-
content/server/config-users.html | 15 +-
content/server/config.html | 31 +-
content/server/dev-build.html | 12 +-
content/server/dev-database-schema.html | 12 +-
content/server/dev-extend-mailet.html | 12 +-
content/server/dev-extend-matcher.html | 12 +-
content/server/dev-extend-smtp-hook.html | 12 +-
content/server/dev-extend.html | 12 +-
content/server/dev-provided-smtp-hooks.html | 12 +-
content/server/dev-provided.html | 12 +-
content/server/dev.html | 12 +-
content/server/feature-mailetcontainer.html | 12 +-
content/server/feature-performance.html | 12 +-
content/server/feature-persistence.html | 12 +-
content/server/feature-protocols.html | 15 +-
content/server/feature-queue-priority.html | 12 +-
content/server/feature-security.html | 12 +-
content/server/feature-smtp-hooks.html | 12 +-
content/server/features.html | 12 +-
content/server/index.html | 10 +-
content/server/install.html | 12 +-
content/server/install/guice-cassandra.html | 12 +-
content/server/install/guice-jpa-smtp.html | 12 +-
content/server/install/guice-jpa.html | 12 +-
content/server/manage-cli.html | 12 +-
content/server/manage-jmx.html | 8 +-
content/server/manage-webadmin.html | 698 ++++++++++++-------
content/server/manage.html | 12 +-
content/server/metrics.html | 14 +-
content/server/monitor-folders.html | 12 +-
content/server/monitor-jmx.html | 12 +-
content/server/monitor-logging.html | 12 +-
content/server/monitor.html | 12 +-
content/server/objectives.html | 10 +-
content/server/other-versions.html | 10 +-
content/server/packaging.html | 12 +-
content/server/quick-start-cassandra.html | 8 +-
content/server/quick-start.html | 12 +-
content/server/release-notes.html | 10 +-
content/server/rfcs.html | 10 +-
content/server/upgrade-2.3.html | 12 +-
content/server/upgrade-database.html | 12 +-
content/server/upgrade.html | 12 +-
content/support.html | 8 +-
content/team-list.html | 8 +-
content/thanks.html | 8 +-
128 files changed, 2562 insertions(+), 850 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-site/blob/e4e14366/content/contribute.html
----------------------------------------------------------------------
diff --git a/content/contribute.html b/content/contribute.html
index 50dc4ea..be38908 100644
--- a/content/contribute.html
+++ b/content/contribute.html
@@ -18,7 +18,7 @@
under the License.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia at 2018-06-07 -->
+<!-- Generated by Apache Maven Doxia at 2018-07-05 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -37,7 +37,7 @@
<script type="text/javascript" src="./js/fancybox/jquery.fancybox-1.3.4.js"></script>
<link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
<meta name="author" content="James Project Web Team" />
- <meta name="Date-Revision-yyyymmdd" content="20180607" />
+ <meta name="Date-Revision-yyyymmdd" content="20180705" />
<meta http-equiv="Content-Language" content="en" />
<!-- Google Analytics -->
@@ -75,7 +75,7 @@
<div class="xleft">
- <span id="publishDate">Last Published: 2018-06-07</span>
+ <span id="publishDate">Last Published: 2018-07-05</span>
</div>
<div class="xright"> <a href="index.html" title="Home">Home</a>
|
@@ -138,7 +138,7 @@
</li>
</ul>
</li>
-
<li class="collapsed">
+
<li class="collapsed">
<a href="server/index.html" title="Server">Server</a>
</li>
<li class="collapsed">
http://git-wip-us.apache.org/repos/asf/james-site/blob/e4e14366/content/documentation.html
----------------------------------------------------------------------
diff --git a/content/documentation.html b/content/documentation.html
index ac47f5e..8cf138c 100644
--- a/content/documentation.html
+++ b/content/documentation.html
@@ -18,7 +18,7 @@
under the License.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia at 2018-06-07 -->
+<!-- Generated by Apache Maven Doxia at 2018-07-05 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -37,7 +37,7 @@
<script type="text/javascript" src="./js/fancybox/jquery.fancybox-1.3.4.js"></script>
<link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
<meta name="author" content="James Project Web Team" />
- <meta name="Date-Revision-yyyymmdd" content="20180607" />
+ <meta name="Date-Revision-yyyymmdd" content="20180705" />
<meta http-equiv="Content-Language" content="en" />
<script type="text/javascript" src="js/james/index.js?v=2"></script><script type="text/javascript" src="js/james/functions.js"></script>
<!-- Google Analytics -->
@@ -75,7 +75,7 @@
<div class="xleft">
- <span id="publishDate">Last Published: 2018-06-07</span>
+ <span id="publishDate">Last Published: 2018-07-05</span>
</div>
<div class="xright"> <a href="index.html" title="Home">Home</a>
|
@@ -138,7 +138,7 @@
</li>
</ul>
</li>
-
<li class="collapsed">
+
<li class="collapsed">
<a href="server/index.html" title="Server">Server</a>
</li>
<li class="collapsed">
http://git-wip-us.apache.org/repos/asf/james-site/blob/e4e14366/content/download.html
----------------------------------------------------------------------
diff --git a/content/download.html b/content/download.html
index b851169..4e95a72 100644
--- a/content/download.html
+++ b/content/download.html
@@ -18,7 +18,7 @@
under the License.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia at 2018-06-07 -->
+<!-- Generated by Apache Maven Doxia at 2018-07-05 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -37,7 +37,7 @@
<script type="text/javascript" src="./js/fancybox/jquery.fancybox-1.3.4.js"></script>
<link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
<meta name="author" content="Apache James Mail Server Project" />
- <meta name="Date-Revision-yyyymmdd" content="20180607" />
+ <meta name="Date-Revision-yyyymmdd" content="20180705" />
<meta http-equiv="Content-Language" content="en" />
<!-- Google Analytics -->
@@ -133,7 +133,7 @@
<div class="xleft">
- <span id="publishDate">Last Published: 2018-06-07</span>
+ <span id="publishDate">Last Published: 2018-07-05</span>
</div>
<div class="xright"> <a href="index.html" title="Home">Home</a>
|
@@ -164,7 +164,7 @@
<li class="collapsed">
<a href="documentation.html" title="About James">About James</a>
</li>
-
<li class="collapsed">
+
<li class="collapsed">
<a href="server/index.html" title="Server">Server</a>
</li>
<li class="collapsed">
http://git-wip-us.apache.org/repos/asf/james-site/blob/e4e14366/content/feed.xml
----------------------------------------------------------------------
diff --git a/content/feed.xml b/content/feed.xml
index 441b674..ff321a5 100644
--- a/content/feed.xml
+++ b/content/feed.xml
@@ -24,8 +24,8 @@
</description>
<link>http://james.apache.org/</link>
<atom:link href="http://james.apache.org/feed.xml" rel="self" type="application/rss+xml"/>
- <pubDate>Thu, 07 Jun 2018 15:56:52 +0700</pubDate>
- <lastBuildDate>Thu, 07 Jun 2018 15:56:52 +0700</lastBuildDate>
+ <pubDate>Thu, 05 Jul 2018 09:13:05 +0700</pubDate>
+ <lastBuildDate>Thu, 05 Jul 2018 09:13:05 +0700</lastBuildDate>
<generator>Jekyll v3.4.3</generator>
<item>
http://git-wip-us.apache.org/repos/asf/james-site/blob/e4e14366/content/guidelines.html
----------------------------------------------------------------------
diff --git a/content/guidelines.html b/content/guidelines.html
index 53a4285..a3cfb45 100644
--- a/content/guidelines.html
+++ b/content/guidelines.html
@@ -18,7 +18,7 @@
under the License.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia at 2018-06-07 -->
+<!-- Generated by Apache Maven Doxia at 2018-07-05 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -37,7 +37,7 @@
<script type="text/javascript" src="./js/fancybox/jquery.fancybox-1.3.4.js"></script>
<link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
<meta name="author" content="James Project Web Team" />
- <meta name="Date-Revision-yyyymmdd" content="20180607" />
+ <meta name="Date-Revision-yyyymmdd" content="20180705" />
<meta http-equiv="Content-Language" content="en" />
<!-- Google Analytics -->
@@ -75,7 +75,7 @@
<div class="xleft">
- <span id="publishDate">Last Published: 2018-06-07</span>
+ <span id="publishDate">Last Published: 2018-07-05</span>
</div>
<div class="xright"> <a href="index.html" title="Home">Home</a>
|
@@ -138,7 +138,7 @@
</li>
</ul>
</li>
-
<li class="collapsed">
+
<li class="collapsed">
<a href="server/index.html" title="Server">Server</a>
</li>
<li class="collapsed">
http://git-wip-us.apache.org/repos/asf/james-site/blob/e4e14366/content/howTo/imap-server.html
----------------------------------------------------------------------
diff --git a/content/howTo/imap-server.html b/content/howTo/imap-server.html
new file mode 100644
index 0000000..8949423
--- /dev/null
+++ b/content/howTo/imap-server.html
@@ -0,0 +1,281 @@
+<!--
+ 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.
+-->
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8"/>
+ <title>Apache James</title>
+
+ <link rel="stylesheet" type="text/css" href="/assets/css/main.css">
+ <link rel="stylesheet" type="text/css" href="/assets/css/font-awesome.min.css">
+ <link rel="stylesheet" type="text/css" href="/assets/css/ie8.css">
+ <link rel="stylesheet" type="text/css" href="/assets/css/ie9.css">
+ <link rel="shortcut icon" href="/images/james-logo.png">
+ </head>
+<body>
+ <!--
+ 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.
+-->
+<link href="assets/css/lightbox.css" rel="stylesheet">
+<link href="assets/css/lity.min.css" rel="stylesheet" />
+<div id="wrapper">
+ <div class="apache_ref">
+ <a href="https://www.apache.org" alt="apache foundation link"><img src="https://www.apache.org/foundation/press/kit/asf_logo.svg" title="apache foundation logo"/></a>
+ </div>
+ <div class="apache_ref_mobile">
+ <a href="https://www.apache.org" alt="apache foundation link">The Apache Software Foundation</a>
+ </div>
+ <div class="apache_ref_left">
+ <a href="https://www.apache.org/events/current-event.html" alt="apache foundation event"><img src="https://www.apache.org/events/current-event-234x60.png" title="apache foundation event logo"/></a>
+ </div>
+ <div class="apache_ref_left_mobile">
+ <a href="https://www.apache.org/events/current-event.html" alt="apache foundation event"><img src="https://www.apache.org/events/current-event-234x60.png" title="apache foundation event logo"/></a>
+ </div>
+
+ <!-- Header -->
+ <header id="header" class="alt">
+ <div class="logo"><a href="/index.html" alt="Apache James"><img src="/images/james.svg" alt="james logo"/></a></div>
+ <h1 class="hidden">James Enterprise Mail Server</h1>
+ <h2>Emails at the heart of your business logic</h2>
+ </header>
+
+ <!-- Main -->
+ <div id="main">
+
+ <!-- Introduction -->
+ <section id="intro" class="main special">
+ <div class="">
+ <div class="content align-left">
+ <header class="major">
+ <h1><b>Setting up an IMAP server</b></h1>
+ </header>
+
+ <p>
+ This document will present how to set up a James server in order to serve as a personal IMAP + SMTP
+ server. We will cover:
+ </p>
+
+ <ul>
+ <li>DNS creation and MX record</li>
+ <li>Server components description</li>
+ <li>Generation of a custom keystore</li>
+ <li>Starting James</li>
+ <li>Basic James administration</li>
+ <li>Additional features one might want to enable...</li>
+ </ul>
+
+ <p>
+ This guide rely on the JPA Guice Docker image. To run it, one need to have docker installed.
+ </p>
+
+ <header class="major">
+ <h2><b>DNS resolution</b></h2>
+ </header>
+
+ <p>
+ Someone willing to send you an email will first have to discover which IP your mail server have.
+ The way this is achieved is through MX (means Mail eXchange) DNS record.
+ </p>
+
+ <p>
+ Imagine bob@domain.org sends a mail to alice@company.com. Bob will:
+ </p>
+
+ <ol>
+ <li>Ask <code>company.com</code> DNS server its MX entries</li>
+ <li><code>company.com</code> respond that it is <code>mx.company.com</code></li>
+ <li>Bob resolves <code>mx.company.com</code> ip address...</li>
+ <li>And can establish a connection to <code>mx.company.com</code> to send an email to Alice</li>
+ </ol>
+
+ <p>All is needed is a MX entry in domain name resolution pointing to the future IP of your James server.</p>
+
+ <header class="major">
+ <h2><b>JAMES architecture</b></h2>
+ </header>
+
+ <p>JPA guice docker image relies on an embedded derby database for storing data. Note that Apache Lucene library
+ is used for email search. A mail queue is implemented on top of an embedded Apache ActiveMQ. Hence James do not need
+ any external service for being running.
+ </p>
+
+ <img src="/images/guice-jpa-architecture-overview.png">
+
+ <p>
+ JPA guice offers the following protocols:
+ </p>
+
+ <ul class="no-padding">
+ <li><b>SMTP</b> For receiving emails</li>
+ <li><b>IMAP</b> For reading emails</li>
+ <li><b><a href="http://james.apache.org/server/manage-webadmin.html">WebAdmin</a></b> is a REST API allowing you to manage Apache JAMES</li>
+ </ul>
+
+ <p>The following protocols are also available:</p>
+
+ <ul class="no-padding">
+ <li><b>LMTP</b> local version of SMTP</li>
+ <li><b>POP3</b> For reading emails. Lacks tests</li>
+ <li><b>JMX</b> is used by a <a href="http://james.apache.org/server/manage-cli.html">command line</a> for administrating Apache James</li>
+ <li>And <a href="http://james.apache.org/server/feature-protocols.html">more</a>...</li>
+ </ul>
+
+ <header class="major">
+ <h2><b>Generation of a custom keystore</b></h2>
+ </header>
+
+ <p>In order to maintain a good level of privacy and security, James is relying on TLS cryptography
+ for securing exchanges. We thus need to generate our own personal keystore. Note that this guide do not
+ cover generating a keystore from SSL certificates. A security exception might be configured on the Mail
+ User Agent.</p>
+
+ <p>In order to create a keystore, please run: <code>keytool -genkey -alias james -keyalg RSA -keystore /path/to/james/conf/keystore</code>.
+ James is configured with a default password <code>james72laBalle</code> (used to read the keystore). However, we will be overriding the
+ configuration of the docker image, so you can be defining your own.</p>
+
+ <header class="major">
+ <h2><b>Starting james</b></h2>
+ </header>
+
+ <p>We want to override the configuration of the docker image with a volume.</p>
+
+ <p>First let's retrieve a valid configuration:</p>
+
+ <pre><code>$ git clone https://github.com/apache/james-project
+$ cp -rf james-project/dockerfiles/run/guice/jpa/destination/conf conf
+$ mv keystore conf/keystore</code></pre>
+
+ <p>Modify all protocol configuration files to match your keystore password (imapserver.xml, lmtpserver.xml, managesieveserver.xml, pop3server.xml, smtpserver.xml).</p>
+
+ <p>We will create a local folder for holding data out of the container:</p>
+
+ <pre><code>mkdir var</code></pre>
+
+
+ <p>Then, let's start James:</p>
+
+ <pre><code>docker run \
+ --name james_run \
+ --port "25:25" --port "465:465" --port "587:587" \
+ --port "143:143" --port "993:993" \
+ --volume "$PWD/conf:/root/conf/" \
+ --volume "$PWD/var:/root/var/" \
+linagora/james-jpa-guice:latest</code></pre>
+
+
+ <header class="major">
+ <h2><b>Administrating James</b></h2>
+ </header>
+
+ <p>We now have a running James server. We just need to tell him which users and domains it should be handling mails for.
+ We will, in order to do this, use the command line:</p>
+
+ <pre><code>docker exec james_run java -jar /root/james-cli.jar AddDomain domain.tld
+docker exec james_run java -jar /root/james-cli.jar AddUser user@domain.tld secretPassword</code></pre>
+
+ <p>The command line client can be used for several other purposes like managing quota, setting addresses redirections, etc..</p>
+
+ <header class="major">
+ <h2><b>Additional features</b></h2>
+ </header>
+
+ <p>James is a large project with many features. You can go further and complete your installation with
+ an <a href="http://james.apache.org/server/config-antispam.html">AntiSpam system</a>, or set up
+ <a href="http://james.apache.org/server/metrics.html">metric display</a>, collect logs in ElasticSearch for a display in Kibana,
+ and much more!</p>
+
+ <p>Also, James offers support for <a href="https://medium.com/linagora-engineering/installing-james-3-0-with-spf-verification-421b26b92f11">SPF</a>
+ and DKIM standard, which increase the trust external people can get in your mail system.</p>
+
+ </div>
+ <footer class="major">
+ <ul class="actions align-center">
+ <li><a href="index.html" class="button">go back to other how-tos</a></li>
+ </ul>
+ </footer>
+ </div>
+ </section>
+
+ </div>
+ <footer id="footer" class="major">
+ <section>
+ <h2>James</h2>
+ <ul class="no-padding">
+ <li class="no-padding"><a href="https://james.apache.org/#intro" class="active">About</a></li>
+ <li class="no-padding"><a href="https://james.apache.org/#first">Get Started</a></li>
+ <li class="no-padding"><a href="https://james.apache.org/#posts">Last Posts</a></li>
+ <li class="no-padding"><a href="https://james.apache.org/#second">Community</a></li>
+ <li class="no-padding"><a href="https://james.apache.org/#third">Contribute</a></li>
+ <li class="no-padding"><a href="https://james.apache.org/"><span class="fa fa-external-link"></span> Documentation</a></li>
+ </ul>
+ </section>
+ <section>
+ <h2>Connect</h2>
+ <ul class="icons">
+ <li><a href="https://james.apache.org/mail.html" class="icon fa-envelope-o alt"><span class="label">Mailing-list</span></a></li>
+ <li><a href="https://gitter.im/apache/james-project" class="icon fa-wechat alt"><span class="label">Gitter</span></a></li>
+ <li><a href="https://github.com/apache/james-project" class="icon fa-github alt"><span class="label">GitHub</span></a></li>
+ <li><a href="https://twitter.com/ApacheJames" class="icon fa-twitter alt"><span class="label">Twitter</span></a></li>
+ <li><a href="https://james.apache.org/support.html" class="icon fa-briefcase alt"><span class="label">Support</span></a></li>
+ <li><a href="http://www.apache.org/events/current-event" class="icon fa-calendar alt"><span class="label">Apache Foundation events</span></a></li>
+ </ul>
+ </section>
+ <section class="legal-section">
+ <h2>Copyright</h2>
+ Apache James and related projects are trademarks of the Apache Software Foundation.<br/>
+ <a href="https://www.apache.org/">Copyright 2006-2018 The Apache Software Foundation. All Rights Reserved.</a><br/>
+ <a href="https://www.apache.org/licenses/">License</a><br/>
+ <a href="https://www.apache.org/foundation/sponsorship.html">Donate</a> to support the Apache Foundation<br/>
+ <a href="https://www.apache.org/foundation/thanks.html">Thanks</a><br/>
+ Design: <a href="https://html5up.net">HTML5 UP</a><br/>
+ Thanks to <a href="http://www.neoma-interactive.com/">Neoma by Linagora</a> for the website design
+ </section>
+ </footer>
+</div>
+
+<!-- Scripts -->
+<script src="assets/js/jquery.min.js"></script>
+<script src="assets/js/jquery.scrollex.min.js"></script>
+<script src="assets/js/jquery.scrolly.min.js"></script>
+<script src="assets/js/skel.min.js"></script>
+<script src="assets/js/util.js"></script>
+<script src="assets/js/lightbox.js"></script>
+<script src="assets/js/github-fetch.js"></script>
+<script src="assets/js/lity.min.js"></script>
+<!--[if lte IE 8]><script src="assets/js/ie/respond.min.js"></script><![endif]-->
+<script src="assets/js/main.js"></script>
+
+
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/james-site/blob/e4e14366/content/howTo/index.html
----------------------------------------------------------------------
diff --git a/content/howTo/index.html b/content/howTo/index.html
new file mode 100644
index 0000000..3c3ac62
--- /dev/null
+++ b/content/howTo/index.html
@@ -0,0 +1,166 @@
+<!--
+ 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.
+-->
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8"/>
+ <title>Apache James</title>
+
+ <link rel="stylesheet" type="text/css" href="/assets/css/main.css">
+ <link rel="stylesheet" type="text/css" href="/assets/css/font-awesome.min.css">
+ <link rel="stylesheet" type="text/css" href="/assets/css/ie8.css">
+ <link rel="stylesheet" type="text/css" href="/assets/css/ie9.css">
+ <link rel="shortcut icon" href="/images/james-logo.png">
+ </head>
+<body>
+ <!--
+ 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.
+-->
+<link href="assets/css/lightbox.css" rel="stylesheet">
+<link href="assets/css/lity.min.css" rel="stylesheet" />
+<div id="wrapper">
+ <div class="apache_ref">
+ <a href="https://www.apache.org" alt="apache foundation link"><img src="https://www.apache.org/foundation/press/kit/asf_logo.svg" title="apache foundation logo"/></a>
+ </div>
+ <div class="apache_ref_mobile">
+ <a href="https://www.apache.org" alt="apache foundation link">The Apache Software Foundation</a>
+ </div>
+ <div class="apache_ref_left">
+ <a href="https://www.apache.org/events/current-event.html" alt="apache foundation event"><img src="https://www.apache.org/events/current-event-234x60.png" title="apache foundation event logo"/></a>
+ </div>
+ <div class="apache_ref_left_mobile">
+ <a href="https://www.apache.org/events/current-event.html" alt="apache foundation event"><img src="https://www.apache.org/events/current-event-234x60.png" title="apache foundation event logo"/></a>
+ </div>
+
+ <!-- Header -->
+ <header id="header" class="alt">
+ <div class="logo"><a href="/index.html" alt="Apache James"><img src="/images/james.svg" alt="james logo"/></a></div>
+ <h1 class="hidden">James Enterprise Mail Server</h1>
+ <h2>Emails at the heart of your business logic</h2>
+ </header>
+
+ <!-- Main -->
+ <div id="main">
+
+ <!-- Introduction -->
+ <section id="intro" class="main special">
+ <div class="">
+ <div class="content">
+ <header class="major">
+ <h2>James how to's...</h2>
+ </header>
+ <p class="align-left">James can be used for a wide variety of cases here is a little list of what you can use it for.<br/>
+ This section explains in detail how to achieve these cool features in a straightforward way...</p>
+
+ <a href="mail-processing.html"
+ data-lightbox="james-schema"
+ data-title="Customized mail processing"
+ alt="Customized mail processing"
+ class="james-schema" >
+ <span class="fa fa-sitemap"></span>Customized mail processing<span class="fa fa-long-arrow-right"></span>
+ </a>
+ <a href="imap-server.html"
+ data-lightbox="james-schema"
+ data-title="Setting up an IMAP server"
+ alt="Setting up an IMAP server"
+ class="james-schema" >
+ <span class="fa fa-sitemap"></span>Setting up an IMAP server<span class="fa fa-long-arrow-right"></span>
+ </a>
+ <a href="spf.html"
+ data-lightbox="james-schema"
+ data-title="Configuring SPF"
+ alt="Configuring SPF"
+ class="james-schema" >
+ <span class="fa fa-sitemap"></span>Configuring SPF<span class="fa fa-long-arrow-right"></span>
+ </a>
+
+ <br/>
+ <br/>
+
+ </div>
+ </div>
+ </section>
+
+ </div>
+ <footer id="footer" class="major">
+ <section>
+ <h2>James</h2>
+ <ul class="no-padding">
+ <li class="no-padding"><a href="https://james.apache.org/#intro" class="active">About</a></li>
+ <li class="no-padding"><a href="https://james.apache.org/#first">Get Started</a></li>
+ <li class="no-padding"><a href="https://james.apache.org/#posts">Last Posts</a></li>
+ <li class="no-padding"><a href="https://james.apache.org/#second">Community</a></li>
+ <li class="no-padding"><a href="https://james.apache.org/#third">Contribute</a></li>
+ <li class="no-padding"><a href="https://james.apache.org/"><span class="fa fa-external-link"></span> Documentation</a></li>
+ </ul>
+ </section>
+ <section>
+ <h2>Connect</h2>
+ <ul class="icons">
+ <li><a href="https://james.apache.org/mail.html" class="icon fa-envelope-o alt"><span class="label">Mailing-list</span></a></li>
+ <li><a href="https://gitter.im/apache/james-project" class="icon fa-wechat alt"><span class="label">Gitter</span></a></li>
+ <li><a href="https://github.com/apache/james-project" class="icon fa-github alt"><span class="label">GitHub</span></a></li>
+ <li><a href="https://twitter.com/ApacheJames" class="icon fa-twitter alt"><span class="label">Twitter</span></a></li>
+ <li><a href="https://james.apache.org/support.html" class="icon fa-briefcase alt"><span class="label">Support</span></a></li>
+ <li><a href="http://www.apache.org/events/current-event" class="icon fa-calendar alt"><span class="label">Apache Foundation events</span></a></li>
+ </ul>
+ </section>
+ <section class="legal-section">
+ <h2>Copyright</h2>
+ Apache James and related projects are trademarks of the Apache Software Foundation.<br/>
+ <a href="https://www.apache.org/">Copyright 2006-2018 The Apache Software Foundation. All Rights Reserved.</a><br/>
+ <a href="https://www.apache.org/licenses/">License</a><br/>
+ <a href="https://www.apache.org/foundation/sponsorship.html">Donate</a> to support the Apache Foundation<br/>
+ <a href="https://www.apache.org/foundation/thanks.html">Thanks</a><br/>
+ Design: <a href="https://html5up.net">HTML5 UP</a><br/>
+ Thanks to <a href="http://www.neoma-interactive.com/">Neoma by Linagora</a> for the website design
+ </section>
+ </footer>
+</div>
+
+<!-- Scripts -->
+<script src="assets/js/jquery.min.js"></script>
+<script src="assets/js/jquery.scrollex.min.js"></script>
+<script src="assets/js/jquery.scrolly.min.js"></script>
+<script src="assets/js/skel.min.js"></script>
+<script src="assets/js/util.js"></script>
+<script src="assets/js/lightbox.js"></script>
+<script src="assets/js/github-fetch.js"></script>
+<script src="assets/js/lity.min.js"></script>
+<!--[if lte IE 8]><script src="assets/js/ie/respond.min.js"></script><![endif]-->
+<script src="assets/js/main.js"></script>
+
+
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/james-site/blob/e4e14366/content/howTo/mail-processing.html
----------------------------------------------------------------------
diff --git a/content/howTo/mail-processing.html b/content/howTo/mail-processing.html
new file mode 100644
index 0000000..1d633a5
--- /dev/null
+++ b/content/howTo/mail-processing.html
@@ -0,0 +1,318 @@
+<!--
+ 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.
+-->
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8"/>
+ <title>Apache James</title>
+
+ <link rel="stylesheet" type="text/css" href="/assets/css/main.css">
+ <link rel="stylesheet" type="text/css" href="/assets/css/font-awesome.min.css">
+ <link rel="stylesheet" type="text/css" href="/assets/css/ie8.css">
+ <link rel="stylesheet" type="text/css" href="/assets/css/ie9.css">
+ <link rel="shortcut icon" href="/images/james-logo.png">
+ </head>
+<body>
+ <!--
+ 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.
+-->
+<link href="assets/css/lightbox.css" rel="stylesheet">
+<link href="assets/css/lity.min.css" rel="stylesheet" />
+<div id="wrapper">
+ <div class="apache_ref">
+ <a href="https://www.apache.org" alt="apache foundation link"><img src="https://www.apache.org/foundation/press/kit/asf_logo.svg" title="apache foundation logo"/></a>
+ </div>
+ <div class="apache_ref_mobile">
+ <a href="https://www.apache.org" alt="apache foundation link">The Apache Software Foundation</a>
+ </div>
+ <div class="apache_ref_left">
+ <a href="https://www.apache.org/events/current-event.html" alt="apache foundation event"><img src="https://www.apache.org/events/current-event-234x60.png" title="apache foundation event logo"/></a>
+ </div>
+ <div class="apache_ref_left_mobile">
+ <a href="https://www.apache.org/events/current-event.html" alt="apache foundation event"><img src="https://www.apache.org/events/current-event-234x60.png" title="apache foundation event logo"/></a>
+ </div>
+
+ <!-- Header -->
+ <header id="header" class="alt">
+ <div class="logo"><a href="/index.html" alt="Apache James"><img src="/images/james.svg" alt="james logo"/></a></div>
+ <h1 class="hidden">James Enterprise Mail Server</h1>
+ <h2>Emails at the heart of your business logic</h2>
+ </header>
+
+ <!-- Main -->
+ <div id="main">
+
+ <!-- Introduction -->
+ <section id="intro" class="main special">
+ <div class="">
+ <div class="content align-left">
+ <header class="major">
+ <h1>How to customize mail processing...</h1>
+ </header>
+ <header class="major">
+ <h2><b>Mail processing component overview</b></h2>
+ </header>
+ <p class="align-left">At the heart of James lies the Mailet container, which allows mail processing. This is
+ splitted into smaller units, with specific responsibilities:
+
+ </p>
+
+ <ul class="no-padding">
+ <li><b>Mailets:</b> Are operations performed with the mail: modifying it, performing a side-effect, etc...</li>
+ <li><b>Matchers:</b> Are per-recipient conditions for mailet executions</li>
+ <li><b>Processors:</b> Are matcher/mailet pair execution threads</li>
+ </ul>
+
+ <p> Read <a href="/server/feature-mailetcontainer.html">this</a> for more explanations of mailet container concepts.</p>
+
+ <p>Once we define the mailet container content through the <a href="/server/config-mailetcontainer.html">mailetcontailer.xml</a> file.
+ Hence, we can arrange James standard components listed <a href="/server/dev-provided-mailets.html">here</a> to achieve basic logic. But what if our goals are more
+ complex? What if we need our own processing components?</p>
+
+ <p>This page will propose a 'hands on practice' how-to using James 3.0.1. We will implement a custom mailet and a custom matcher,
+ then deploy it in a James server.</p>
+
+ <p>We need to choose our use case. We will, when a mail is delayed over one day, write a mail to the original sender
+ to inform him about the delay, say that we are sorry, and send him a promotion code...<pre></pre></p>
+
+
+ <header class="major">
+ <h2><b>Writing custom mailets and matchers</b></h2>
+ </header>
+
+ <p>None of the matchers and mailets available in James allows us to implement what we want. We will have to
+ write our own mailet and matcher in a separated maven project depending on James Mailet API.</p>
+
+ <p>We will write a <b>IsDelayedForMoreThan</b> matcher with a configurable delay. If the Sent Date of incoming emails is older than specified delay, then the emails
+ should be matched (return all mail recipients). Otherwise, we just return an empty list of recipients.</p>
+
+ <p>To ease our Job, we can rely on the <b>org.apache.james.apache-mailet-base</b> maven project, which provides us a <b>GenericMatcher</b> that we can extend.</p>
+
+ <p>Here is the dependency:</p>
+
+ <pre><code><dependency>
+ <groupId>org.apache.james</groupId>
+ <artifactId>apache-mailet-base</artifactId>
+</dependency></code></pre>
+
+ <p>The main method of a matcher is the <b>match</b> method:</p>
+
+ <pre><code>Collection<MailAddress> match(Mail mail) throws MessagingException;</code></pre>
+
+ <p>For us, it becomes, with <b>maxDelay</b> being previously configured:</p>
+
+ <pre><code> private final Clock clock;
+ private Duration maxDelay;
+
+ @Override
+ public Collection<MailAddress> match(Mail mail) throws MessagingException {
+ Date sentDate = mail.getMessage().getSentDate();
+
+ if (clock.instant().isAfter(sentDate.toInstant().plusMillis(maxDelay.toMillis()))) {
+ return ImmutableList.copyOf(mail.getRecipients());
+ }
+ return ImmutableList.of();
+ }</code></pre>
+
+ <p><b>GenericMatcher</b> exposes us the condition that had been configured. We will use it to compute <b>maxDelay</b>.
+ We can do it in the <b>init()</b> method exposed by the generic matcher:</p>
+
+ <pre><code>
+ public static final TimeConverter.Unit DEFAULT_UNIT = TimeConverter.Unit.HOURS;
+
+ @Override
+ public void init() {
+ String condition = getCondition();
+ maxDelay = Duration.ofMillis(TimeConverter.getMilliSeconds(condition, DEFAULT_UNIT));
+ }</code></pre>
+
+ <p>Now, let's take a look at the <b>SendPromotionCode</b> mailet. Of course, we want to write a generic mailet
+ with a configurable reason (why are we sending the promotion code). To keep things simple, only one promotion
+ code will be used, and will be written in the configuration. We can here also simply extend the
+ <b>GenericMailet</b> helper class.</p>
+
+ <p>The main method of a mailet is the <b>service</b> method:</p>
+
+ <pre><code>void service(Mail mail) throws MessagingException</code></pre>
+
+ <p>For us, it becomes, with <b>reason</b> and <b>promotionCode</b> being previously configured:</p>
+
+ <pre><code> public static final boolean REPLY_TO_SENDER_ONLY = false;
+
+ private String reason;
+ private String promotionCode;
+
+ @Override
+ public void service(Mail mail) throws MessagingException {
+ MimeMessage response = (MimeMessage) mail.getMessage()
+ .reply(REPLY_TO_SENDER_ONLY);
+
+ response.setText(reason + "\n\n" +
+ "Here is the following promotion code that you can use on your next order: " + promotionCode);
+
+ MailAddress sender = getMailetContext().getPostmaster();
+ ImmutableList<MailAddress> recipients = ImmutableList.of(mail.getSender());
+
+ getMailetContext()
+ .sendMail(sender, recipients, response);
+ }</code></pre>
+
+ <p>Note that we can interact with the mail server through the mailet context for sending mails, knowing postmaster, etc...</p>
+
+ <p><b>GenericMailet</b> exposes us the 'init parameters' that had been configured for this mailet. We will
+ use it to retireve <b>reason</b> and <b>promotionCode</b>.
+ We can do it in the <b>init()</b> method exposed by the generic mailet:</p>
+
+ <pre><code> @Override
+ public void init() throws MessagingException {
+ reason = getInitParameter("reason");
+ promotionCode = getInitParameter("promotionCode");
+
+ if (Strings.isNullOrEmpty(reason)) {
+ throw new MessagingException("'reason' is compulsory");
+ }
+ if (Strings.isNullOrEmpty(promotionCode)) {
+ throw new MessagingException("'promotionCode' is compulsory");
+ }
+ }</code></pre>
+
+ <p>You can retrieve the sources of this mini-project on <a href="https://github.com/apache/james-project/examples/custom-mailets">GitHub</a></p>
+
+ <header class="major">
+ <h2><b>Loading custom mailets with James</b></h2>
+ </header>
+
+ <p>Now is the time we will run James with our awesome matcher and mailet configured.</p>
+
+ <p>First, we will need to compile our project with <code>mvn clean install</code>. A jar will be outputted in the target directory.</p>
+
+ <p>Then, we will write the <code>mailetcontainer.xml</code> file expressing the logic we want:</p>
+
+ <pre><code>
+<mailetcontainer enableJmx="true">
+
+ <context>
+ <postmaster>postmaster@james.minet.net</postmaster>
+ </context>
+
+ <spooler>
+ <threads>20</threads>
+ </spooler>
+
+ <processors>
+ <processor state="root" enableJmx="true">
+ <mailet match="All" class="PostmasterAlias"/>
+ <mailet match="org.apache.james.examples.custom.mailets.IsDelayedForMoreThan=1 day"
+ class="org.apache.james.examples.custom.mailets.SendPromotionCode">
+ <reason>Your email had been delayed for a long time. Because we are sorry about it, please find the
+ following promotion code.</reason>
+ <promotionCode>1542-2563-5469</promotionCode>
+ </mailet>
+ <!-- Rest of the configuration -->
+ </processor>
+
+ <!-- Other processors -->
+ </processors>
+</mailetcontainer></code></pre>
+
+ <p>Finally, we will start a James server using that. We will rely on docker default image for simplicity.
+ We need to be using the <b>mailetcontainer.xml</b> configuration that we had been writing and position
+ the jar in the <b>extensions-jars</b> folder (specific to guice). This can be achieved with the following command:</p>
+
+ <pre><code>docker run -p "25:25" -p "143:143" \
+ -v "$PWD/src/main/resources/mailetcontainer.xml:/root/conf/mailetcontainer.xml" \
+ -v "$PWD/target/custom-mailets-3.1.0-SNAPSHOT.jar:/root/extensions-jars/custom-mailets.jar" \
+ linagora/james-jpa-sample:latest</code></pre>
+
+ </div>
+ <footer class="major">
+ <ul class="actions align-center">
+ <li><a href="index.html" class="button">go back to other how-tos</a></li>
+ </ul>
+ </footer>
+ </div>
+ </section>
+
+ </div>
+ <footer id="footer" class="major">
+ <section>
+ <h2>James</h2>
+ <ul class="no-padding">
+ <li class="no-padding"><a href="https://james.apache.org/#intro" class="active">About</a></li>
+ <li class="no-padding"><a href="https://james.apache.org/#first">Get Started</a></li>
+ <li class="no-padding"><a href="https://james.apache.org/#posts">Last Posts</a></li>
+ <li class="no-padding"><a href="https://james.apache.org/#second">Community</a></li>
+ <li class="no-padding"><a href="https://james.apache.org/#third">Contribute</a></li>
+ <li class="no-padding"><a href="https://james.apache.org/"><span class="fa fa-external-link"></span> Documentation</a></li>
+ </ul>
+ </section>
+ <section>
+ <h2>Connect</h2>
+ <ul class="icons">
+ <li><a href="https://james.apache.org/mail.html" class="icon fa-envelope-o alt"><span class="label">Mailing-list</span></a></li>
+ <li><a href="https://gitter.im/apache/james-project" class="icon fa-wechat alt"><span class="label">Gitter</span></a></li>
+ <li><a href="https://github.com/apache/james-project" class="icon fa-github alt"><span class="label">GitHub</span></a></li>
+ <li><a href="https://twitter.com/ApacheJames" class="icon fa-twitter alt"><span class="label">Twitter</span></a></li>
+ <li><a href="https://james.apache.org/support.html" class="icon fa-briefcase alt"><span class="label">Support</span></a></li>
+ <li><a href="http://www.apache.org/events/current-event" class="icon fa-calendar alt"><span class="label">Apache Foundation events</span></a></li>
+ </ul>
+ </section>
+ <section class="legal-section">
+ <h2>Copyright</h2>
+ Apache James and related projects are trademarks of the Apache Software Foundation.<br/>
+ <a href="https://www.apache.org/">Copyright 2006-2018 The Apache Software Foundation. All Rights Reserved.</a><br/>
+ <a href="https://www.apache.org/licenses/">License</a><br/>
+ <a href="https://www.apache.org/foundation/sponsorship.html">Donate</a> to support the Apache Foundation<br/>
+ <a href="https://www.apache.org/foundation/thanks.html">Thanks</a><br/>
+ Design: <a href="https://html5up.net">HTML5 UP</a><br/>
+ Thanks to <a href="http://www.neoma-interactive.com/">Neoma by Linagora</a> for the website design
+ </section>
+ </footer>
+</div>
+
+<!-- Scripts -->
+<script src="assets/js/jquery.min.js"></script>
+<script src="assets/js/jquery.scrollex.min.js"></script>
+<script src="assets/js/jquery.scrolly.min.js"></script>
+<script src="assets/js/skel.min.js"></script>
+<script src="assets/js/util.js"></script>
+<script src="assets/js/lightbox.js"></script>
+<script src="assets/js/github-fetch.js"></script>
+<script src="assets/js/lity.min.js"></script>
+<!--[if lte IE 8]><script src="assets/js/ie/respond.min.js"></script><![endif]-->
+<script src="assets/js/main.js"></script>
+
+
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/james-site/blob/e4e14366/content/howTo/spf.html
----------------------------------------------------------------------
diff --git a/content/howTo/spf.html b/content/howTo/spf.html
new file mode 100644
index 0000000..1e2c6a3
--- /dev/null
+++ b/content/howTo/spf.html
@@ -0,0 +1,264 @@
+<!--
+ 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.
+-->
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8"/>
+ <title>Apache James</title>
+
+ <link rel="stylesheet" type="text/css" href="/assets/css/main.css">
+ <link rel="stylesheet" type="text/css" href="/assets/css/font-awesome.min.css">
+ <link rel="stylesheet" type="text/css" href="/assets/css/ie8.css">
+ <link rel="stylesheet" type="text/css" href="/assets/css/ie9.css">
+ <link rel="shortcut icon" href="/images/james-logo.png">
+ </head>
+<body>
+ <!--
+ 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.
+-->
+<link href="assets/css/lightbox.css" rel="stylesheet">
+<link href="assets/css/lity.min.css" rel="stylesheet" />
+<div id="wrapper">
+ <div class="apache_ref">
+ <a href="https://www.apache.org" alt="apache foundation link"><img src="https://www.apache.org/foundation/press/kit/asf_logo.svg" title="apache foundation logo"/></a>
+ </div>
+ <div class="apache_ref_mobile">
+ <a href="https://www.apache.org" alt="apache foundation link">The Apache Software Foundation</a>
+ </div>
+ <div class="apache_ref_left">
+ <a href="https://www.apache.org/events/current-event.html" alt="apache foundation event"><img src="https://www.apache.org/events/current-event-234x60.png" title="apache foundation event logo"/></a>
+ </div>
+ <div class="apache_ref_left_mobile">
+ <a href="https://www.apache.org/events/current-event.html" alt="apache foundation event"><img src="https://www.apache.org/events/current-event-234x60.png" title="apache foundation event logo"/></a>
+ </div>
+
+ <!-- Header -->
+ <header id="header" class="alt">
+ <div class="logo"><a href="/index.html" alt="Apache James"><img src="/images/james.svg" alt="james logo"/></a></div>
+ <h1 class="hidden">James Enterprise Mail Server</h1>
+ <h2>Emails at the heart of your business logic</h2>
+ </header>
+
+ <!-- Main -->
+ <div id="main">
+
+ <!-- Introduction -->
+ <section id="intro" class="main special">
+ <div class="">
+ <div class="content align-left">
+ <header class="major">
+ <h1><b>Setting up SPF</b></h1>
+ </header>
+
+ <p>
+ You just finished installing a <a href="imap-server.html">James IMAP server</a> and wonder how to
+ gain trust for it?
+ </p>
+
+ <p>
+ The Sender Policy Framework (SPF) is an open standard specifying a technical method to prevent
+ sender address forgery, might help you to do this.
+ </p>
+
+ <p>
+ More precisely, SPF protects the envelope sender address, which is used for the delivery of messages.
+ It allows the owner of a domain to specify their mail sending policy, e.g. which mail servers they
+ use to send emails from their domain.
+ </p>
+
+ <p>
+ To correctly configure SPF for your domain, you need to answer the following questions:
+ </p>
+
+ <ul>
+ <li><b>From what server or servers will email from my domain originate?</b> In our case, we only
+ want our James Server to be able to send emails from our domain.</li>
+ <li><b>How do you want illegitimate email to be handled?</b> <code>-all</code> is an SPF fail and
+ usually means dropping such emails, whereas <code>~all</code> is an SPF softfail and traditionally
+ means accepting but marking them.</li>
+ </ul>
+
+ <p>
+ Therefore, we add the following DNS records to our DNS zone file:
+ </p>
+
+ <pre><code>@ IN TXT “v=spf1 +a:james.test-domain.com -all”
+@ IN SPF “v=spf1 +a:james.test-domain.com -all”</code></pre>
+
+ <p>That way other mail servers knows only <i>james.test-domain.com</i> can send mails for <i>test-domain.com</i>.</p>
+
+
+ <header class="major">
+ <h1><b>Verifying SPF for incoming emails</b></h1>
+ </header>
+
+ <p>
+ Now we will see how to verify SPF records of incoming emails. For this we can customize mail processing,
+ and specify actions upon SPF record validity. For introducing these components, James relies on the
+ <a href="https://james.apache.org/jspf/">JSPF</a>library.
+ </p>
+
+ <p>We just need to edit the <code>mailetcontainer.xml</code> configuration file as follow:</p>
+
+ <p>We are going to create a new processor called <b>SPFProcessor</b>. It will handle emails after
+ the <b>root</b> processor but before the <b>transport</b> processor. Moreover, we do not need to
+ perform a SPF check or take a decision if the sender is authenticated or is a local user, because
+ we already trust him.
+
+ In all other cases, we add a SPF header using the <b>SPF</b> mailet. Then we need to take a decision
+ about incoming emails. We use the <b>HasMailAttributeWithValue</b> matcher which has seven possible
+ values to handle in the case of SPF: <b>permerror</b>, <b>temperror</b>, <b>none</b>, <b>pass</b>,
+ <b>neutral</b>, <b>fail</b> and <b>softfail</b>. What action you choose for each of these values
+ depends on what you want to do. In our case, we redirect SPF errors and fails to the <b>error</b>
+ processor, whereas all other cases lead directly to the <b>transport</b> processor for further
+ normal processing. We are rather tolerant since we authorize <b>softfails</b>.</p>
+
+ <p>For example:</p>
+
+ <pre><code>[...]
+
+<processors>
+ <processor state="root" enableJmx="true">
+ <mailet match="All" class="PostmasterAlias"/>
+ <mailet match="RelayLimit=30" class="Null"/>
+ <mailet match="All" class="ToProcessor">
+ <processor>SPFProcessor</processor>
+ </mailet>
+ </processor>
+
+ <processor state="error" enableJmx="true">
+ [...]
+ </processor>
+
+ <processor state="SPFProcessor">
+ <mailet match="SenderIsLocal" class="ToProcessor">
+ <processor>transport</processor>
+ </mailet>
+ <mailet match="SMTPAuthSuccessful" class="ToProcessor">
+ <processor>transport</processor>
+ </mailet>
+ <mailet match="All" class="SPF">
+ <addHeader>true</addHeader>
+ </mailet>
+ <mailet match="HasMailAttributeWithValue=org.apache.james.transport.mailets.spf.result, permerror" class="ToProcessor">
+ <processor>error</processor>
+ </mailet>
+ <mailet match="HasMailAttributeWithValue=org.apache.james.transport.mailets.spf.result, temperror" class="ToProcessor">
+ <processor>error</processor>
+ </mailet>
+ <mailet match="HasMailAttributeWithValue=org.apache.james.transport.mailets.spf.result, none" class="ToProcessor">
+ <processor>transport</processor>
+ </mailet>
+ <mailet match="HasMailAttributeWithValue=org.apache.james.transport.mailets.spf.result, pass" class="ToProcessor">
+ <processor>transport</processor>
+ </mailet>
+ <mailet match="HasMailAttributeWithValue=org.apache.james.transport.mailets.spf.result, neutral" class="ToProcessor">
+ <processor>transport</processor>
+ </mailet>
+ <mailet match="HasMailAttributeWithValue=org.apache.james.transport.mailets.spf.result, fail" class="ToProcessor">
+ <processor>error</processor>
+ </mailet>
+ <mailet match="HasMailAttributeWithValue=org.apache.james.transport.mailets.spf.result, softfail" class="ToProcessor">
+ <processor>transport</processor>
+ </mailet>
+ <mailet match="All" class="LogMessage">
+ <headers>true</headers>
+ <body>false</body>
+ <comment>Unknown SPF result</comment>
+ </mailet>
+ </processor>
+
+[...]</code></pre>
+
+ </div>
+ <footer class="major">
+ <ul class="actions align-center">
+ <li><a href="index.html" class="button">go back to other how-tos</a></li>
+ </ul>
+ </footer>
+ </div>
+ </section>
+
+ </div>
+ <footer id="footer" class="major">
+ <section>
+ <h2>James</h2>
+ <ul class="no-padding">
+ <li class="no-padding"><a href="https://james.apache.org/#intro" class="active">About</a></li>
+ <li class="no-padding"><a href="https://james.apache.org/#first">Get Started</a></li>
+ <li class="no-padding"><a href="https://james.apache.org/#posts">Last Posts</a></li>
+ <li class="no-padding"><a href="https://james.apache.org/#second">Community</a></li>
+ <li class="no-padding"><a href="https://james.apache.org/#third">Contribute</a></li>
+ <li class="no-padding"><a href="https://james.apache.org/"><span class="fa fa-external-link"></span> Documentation</a></li>
+ </ul>
+ </section>
+ <section>
+ <h2>Connect</h2>
+ <ul class="icons">
+ <li><a href="https://james.apache.org/mail.html" class="icon fa-envelope-o alt"><span class="label">Mailing-list</span></a></li>
+ <li><a href="https://gitter.im/apache/james-project" class="icon fa-wechat alt"><span class="label">Gitter</span></a></li>
+ <li><a href="https://github.com/apache/james-project" class="icon fa-github alt"><span class="label">GitHub</span></a></li>
+ <li><a href="https://twitter.com/ApacheJames" class="icon fa-twitter alt"><span class="label">Twitter</span></a></li>
+ <li><a href="https://james.apache.org/support.html" class="icon fa-briefcase alt"><span class="label">Support</span></a></li>
+ <li><a href="http://www.apache.org/events/current-event" class="icon fa-calendar alt"><span class="label">Apache Foundation events</span></a></li>
+ </ul>
+ </section>
+ <section class="legal-section">
+ <h2>Copyright</h2>
+ Apache James and related projects are trademarks of the Apache Software Foundation.<br/>
+ <a href="https://www.apache.org/">Copyright 2006-2018 The Apache Software Foundation. All Rights Reserved.</a><br/>
+ <a href="https://www.apache.org/licenses/">License</a><br/>
+ <a href="https://www.apache.org/foundation/sponsorship.html">Donate</a> to support the Apache Foundation<br/>
+ <a href="https://www.apache.org/foundation/thanks.html">Thanks</a><br/>
+ Design: <a href="https://html5up.net">HTML5 UP</a><br/>
+ Thanks to <a href="http://www.neoma-interactive.com/">Neoma by Linagora</a> for the website design
+ </section>
+ </footer>
+</div>
+
+<!-- Scripts -->
+<script src="assets/js/jquery.min.js"></script>
+<script src="assets/js/jquery.scrollex.min.js"></script>
+<script src="assets/js/jquery.scrolly.min.js"></script>
+<script src="assets/js/skel.min.js"></script>
+<script src="assets/js/util.js"></script>
+<script src="assets/js/lightbox.js"></script>
+<script src="assets/js/github-fetch.js"></script>
+<script src="assets/js/lity.min.js"></script>
+<!--[if lte IE 8]><script src="assets/js/ie/respond.min.js"></script><![endif]-->
+<script src="assets/js/main.js"></script>
+
+
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/james-site/blob/e4e14366/content/images/guice-jpa-architecture-overview.png
----------------------------------------------------------------------
diff --git a/content/images/guice-jpa-architecture-overview.png b/content/images/guice-jpa-architecture-overview.png
new file mode 100644
index 0000000..d479ef0
Binary files /dev/null and b/content/images/guice-jpa-architecture-overview.png differ
http://git-wip-us.apache.org/repos/asf/james-site/blob/e4e14366/content/index.html
----------------------------------------------------------------------
diff --git a/content/index.html b/content/index.html
index 53f57ed..2a9662d 100644
--- a/content/index.html
+++ b/content/index.html
@@ -114,6 +114,9 @@
<a href="images/james-general-architecture.png" data-lightbox="james-schema" data-title="James General architecture" alt="James General architecture" class="james-schema" ><span class="fa fa-sitemap"></span>james general architecture<span class="fa fa-long-arrow-right"></span></a>
<a href="images/james-smtp-relay.png" data-lightbox="james-schema" data-title="James SMTP relay" alt="James SMTP relay" class="james-schema"><span class="fa fa-sitemap"></span>using james as smtp relay<span class="fa fa-long-arrow-right"></span></a>
<a href="images/james-imap-server.png" data-lightbox="james-schema" data-title="James IMAP server" alt="James IMAP server" class="james-schema"><span class="fa fa-sitemap"></span>using james as an imap server<span class="fa fa-long-arrow-right"></span></a><br/><br/>
+
+ <p>Available how-tos for James features are detailed <a href="howTo">here</a>.</p>
+
<h2 class="big-h2"><span class="fa fa-wrench"></span> <span>James is a <b>living Open Source project</b> (all developments and implementations are based on open technical standards), any function which is not already available from <b>can be developed!</b></span></h2>
</div>
</div>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org