| <!-- saved from url=(0022)http://internet.e-mail --> |
| <html> |
| <head> |
| <meta http-equiv="content-type" content=""> |
| <title>Mail transport</title> |
| <link href="../css/axis-docs.css" rel="stylesheet" type="text/css" media="all" /> |
| </head> |
| |
| <body lang="en"> |
| <h1>Mail Transport Configuration</h1> |
| |
| <p>This document provides the guidelines on how to configure Axis2 in order |
| to get the mail transport working.</p> |
| |
| <p><i>Send your feedback or questions to: <a |
| href="mailto:axis-dev@ws.apache.org">axis-dev@ws.apache.org</a></i>. Prefix |
| subject with [Axis2]. To subscribe to mailing list see <a |
| href="http://ws.apache.org/axis2/mail-lists.html">here.</a></p> |
| |
| <h2>Content</h2> |
| <ul> |
| <li><a href="#intro">Introduction</a></li> |
| <li><a href="#sender">Transport Sender</a></li> |
| <li><a href="#receiver">Transport Receiver</a></li> |
| <li><a href="#server">Using Mail Transport in the Server Side</a></li> |
| <li><a href="#james">Configure James as SMTP and POP Server</a></li> |
| <li><a href="#included">Using the Included Mail Server</a></li> |
| </ul> |
| <a name="intro"></a> |
| |
| <h2>Introduction</h2> |
| |
| <p>The inner workings of the mail transport has been divided into two parts, |
| the transport sender for SMTP and the transport listener for POP3. The |
| transport listener will listen to a particular email address periodically. |
| When an email comes in it will be tunneled into an Axis2 engine. On the other |
| hand, mail transport sender sends emails to a mail server for a particular |
| email address.</p> |
| |
| <p>Mail transport can be used against a generic mail server or it can be used |
| like a mailet. The simple mailet provided with Axis2 will direct any message |
| that is coming to a particular address into the Axis engine. The engine will |
| process the message and will use the Transport sender to send the reply.</p> |
| |
| <p>The mail transports have been written with the use of Sun's JavaMail and |
| Activation jars. These should be available in your classpath to get the mail |
| transport work.</p> |
| <a name="sender"></a> |
| |
| <h2>Transport Sender</h2> |
| |
| <p>You need to have a mail account to activate the mail functionality. This |
| can either be a generic mail server or you can start up a James mail server, |
| which will be available <a href="http://james.apache.org/">here</a>.</p> |
| |
| <p>JavaMail sets its properties to a Properties object. In Axis2, this has |
| been mapped to a Parameter object. Mapping has been done as follows,</p> |
| <ul> |
| <li>Every JavaMail property can be set to @name of the <parameter/>. |
| Thus, SSL connection is mapped the way it is done in JavaMail</li> |
| <li>Few properties, such as password etc., are set to @name with the prefix |
| "transport"</li> |
| </ul> |
| |
| <p>For a non-SSL connection, as an example,mail transport sender can be |
| activated by adding following entry to the axis2.xml file.</p> |
| <source><pre> <transportSender name="mail" class="org.apache.axis2.transport.mail.MailTransportSender"> |
| <parameter name="mail.smtp.host" locked="false">localhost</parameter> |
| <parameter name="mail.smtp.user" locked="false">mary</parameter> |
| <parameter name="transport.mail.smtp.password" locked="false">mary</parameter> |
| </transportSender> |
| </pre> |
| </source> |
| <p>In runtime tuning a client to set mail transport is as easy as follows,</p> |
| <source><pre>... |
| |
| Options options = new Options(); |
| HttpTransportProperties.MailProperties mailProps |
| = new HttpTransportProperties.MailProperties(); |
| mailProps.addProperty("mail.smtp.host","localhost"); |
| mailProps.addProperty("mail.smtp.user","mary"); |
| mailProps.setPassword("mary"); |
| |
| options.setProperty(HTTPConstants.MAIL_SMTP,mailProps); |
| |
| ...</pre> |
| </source>Thus, a user familiar with setting up a SSL connection, should |
| easily do it with the MailProperties object. For Eg.: tuning the sender to |
| talk to gmail account. This configuration should also be done with |
| <parameter/> in axis2.xml. <source> |
| <pre>... |
| HttpTransportProperties.MailProperties props = |
| new HttpTransportProperties.MailProperties(); |
| props.put("mail.smtp.user", "address@gmail.com"); |
| props.put("mail.smtp.host", "smtp.gmail.com"); |
| props.put("mail.smtp.port", "465"); |
| props.put("mail.smtp.starttls.enable","true"); |
| props.put("mail.smtp.auth", "true"); |
| //props.put("mail.smtp.debug", "true"); // if the user wants |
| props.put("mail.smtp.socketFactory.port", "465"); |
| props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); |
| props.put("mail.smtp.socketFactory.fallback", "false"); |
| props.setPassword("password"); |
| |
| ...</pre> |
| </source><a name="receiver"></a> |
| |
| <h2>Transport Receiver</h2> |
| |
| <p>For a non-SSL connection, as an example, mail Listener can be activated by |
| adding the following entry to the axis2.xml file.</p> |
| <source><pre> <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener"> |
| <parameter name="mail.pop3.host" locked="false">localhost</parameter> |
| <parameter name="mail.pop3.user" locked="false">bob</parameter> |
| <parameter name="transport.mail.pop3.password" locked="false">bob</parameter> |
| <parameter name="transport.mail.replyToAddress" locked="false">bob@localhost</parameter> |
| </transportReceiver> |
| </pre> |
| </source> |
| <p><i>Note:</i> The @name="transport.mail.replyToAddress" is an important |
| parameter. It supply the Endpoint reference to the listener.</p> |
| |
| <p>For an advanced user, this can be set to a SSL connection. As an example, |
| lets use this transport listener to pop from a specified gmail account.</p> |
| <source><pre><transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener"> |
| <parameter name="mail.pop3.host" locked="false">pop.gmail.com</parameter> |
| <parameter name="mail.pop3.user" locked="false">address@gmail.com</parameter> |
| <parameter name="mail.pop3.socketFactory.class" locked="false">javax.net.ssl.SSLSocketFactory</parameter> |
| <parameter name="mail.pop3.socketFactory.fallback" locked="false">false</parameter> |
| <parameter name="mail.pop3.port" locked="false">995</parameter> |
| <parameter name="mail.pop3.socketFactory.port" locked="false">995</parameter> |
| <parameter name="transport.mail.pop3.password" locked="false">password</parameter> |
| <parameter name="transport.mail.replyToAddress" locked="false">address@gmail.com</parameter> |
| </transportReceiver></pre> |
| </source><a name="server"></a> |
| |
| <h2>Using Mail Transport in the Server Side</h2> |
| |
| <p>If the Mail Listener is need to be started as a standalone mail listener, |
| it can be done with following command with the all the Axis2 jars and the |
| mail dependency jars in the classpath.</p> |
| <source><pre>java org.apache.axis2.transport.mail.SimpleMailListener repository-directory</pre> |
| </source><a name="client"></a> |
| |
| <h2>Using Mail Transport in the Client Side</h2> |
| |
| <p>The following code segment shows how to send a one-way (IN-Only MEP) SOAP |
| message using the mail transport, this needs the Transport Sender |
| configured.</p> |
| <source><pre> |
| OMElement payload = .... |
| String targetEPR = "mail:axis2@localhost/axis2/services/Foo"; |
| |
| ConfigurationContext configurationContext = ConfigurationContextFactory.createConfigurationContextFromFileSystem(repo, |
| axis2XML); |
| |
| ServiceClient servicClient = new ServiceClient(configurationContext, null); |
| |
| Options options = new Options(); |
| options.setTo(targetEPR); |
| options.setTransportInProtocol(Constants.TRANSPORT_MAIL); |
| |
| servicClient.setOptions(options); |
| |
| servicClient.sendRobust(payload);</pre> |
| </source><a name="james"></a> |
| |
| <h2>Configure James as SMTP and POP Server</h2> |
| |
| <p>Download the <a href="http://james.apache.org/">Apache James</a> and start |
| James, connect to the James via Telnet for administrator James with the |
| following code:</p> |
| <source><pre>$telnet 127.0.0.1 4555 |
| Trying 127.0.0.1... |
| Connected to localhost.localdomain (127.0.0.1). |
| Escape character is '^]'. |
| JAMES Remote Administration Tool 2.2.0 |
| Please enter your login and password |
| Login id: |
| root |
| Password: |
| root |
| Welcome root. HELP for a list of commands</pre> |
| </source> |
| <p>Add users to James</p> |
| <source><pre>adduser axis2-server axis2 |
| User axis2-server added |
| adduser axis2-client axis2 |
| User axis2-client added |
| Connection closed by foreign host.</pre> |
| </source> |
| <p>Now James is up and running with the accounts.</p> |
| <a name="included"></a> |
| |
| <h2>Using the Included Mail Server</h2> |
| |
| <p>The inbuilt mail server can be started from the command line using the |
| following piece of code when all the necessary jars are in the class path.</p> |
| <source><pre>java org.apache.axis2.transport.mail.server.MailServer</pre> |
| </source> |
| <p>The server itself does not need any configuration or tinkering to work. A |
| ConfigurationContext and the ports to operate on are the only details needed. |
| The server will store the mails in memory against the recipient till the |
| recipient pops it from the server. To facilitate the use in *nix environments |
| as a non root user the POP and SMTP ports used by default config/test cases |
| are (1024 + 25) and (1024 + 110).</p> |
| <hr> |
| </body> |
| </html> |