Example usage for org.apache.commons.net.smtp SMTPClient sendCommand

List of usage examples for org.apache.commons.net.smtp SMTPClient sendCommand

Introduction

In this page you can find the example usage for org.apache.commons.net.smtp SMTPClient sendCommand.

Prototype

public int sendCommand(String command, String args) throws IOException 

Source Link

Document

Sends an SMTP command to the server, waits for a reply and returns the numerical response code.

Usage

From source file:org.apache.james.smtpserver.SMTPServerTest.java

private void doTestHeloEhloResolv(String heloCommand) throws IOException {
    SMTPClient smtpProtocol = new SMTPClient();
    smtpProtocol.connect("127.0.0.1", smtpListenerPort);

    assertTrue("first connection taken", smtpProtocol.isConnected());

    // no message there, yet
    assertNull("no mail received by mail server", queue.getLastMail());

    String fictionalDomain = "abgsfe3rsf.de";
    String existingDomain = "james.apache.org";
    String mail = "sender@james.apache.org";
    String rcpt = "rcpt@localhost";

    smtpProtocol.sendCommand(heloCommand, fictionalDomain);
    smtpProtocol.setSender(mail);//from  w w  w .j  av a  2  s .  c  om
    smtpProtocol.addRecipient(rcpt);

    // this should give a 501 code cause the helo/ehlo could not resolved
    assertEquals("expected error: " + heloCommand + " could not resolved", 501, smtpProtocol.getReplyCode());

    smtpProtocol.sendCommand(heloCommand, existingDomain);
    smtpProtocol.setSender(mail);
    smtpProtocol.addRecipient(rcpt);

    if (smtpProtocol.getReplyCode() == 501) {
        fail(existingDomain
                + " domain currently cannot be resolved (check your DNS/internet connection/proxy settings to make test pass)");
    }
    // helo/ehlo is resolvable. so this should give a 250 code
    assertEquals(heloCommand + " accepted", 250, smtpProtocol.getReplyCode());

    smtpProtocol.quit();
}

From source file:org.apache.james.smtpserver.SMTPServerTest.java

@Test
public void testReverseEqualsHelo() throws Exception {
    smtpConfiguration.setReverseEqualsHelo();
    smtpConfiguration.setAuthorizedAddresses("192.168.0.1");
    // temporary alter the loopback resolution
    try {/* w w  w .  j  ava 2 s .com*/
        dnsServer.setLocalhostByName(InetAddress.getByName("james.apache.org"));
    } catch (UnknownHostException e) {
        fail("james.apache.org currently cannot be resolved (check your DNS/internet connection/proxy settings to make test pass)");
    }
    try {
        init(smtpConfiguration);

        SMTPClient smtpProtocol1 = new SMTPClient();
        smtpProtocol1.connect("127.0.0.1", smtpListenerPort);

        assertTrue("first connection taken", smtpProtocol1.isConnected());

        // no message there, yet
        assertNull("no mail received by mail server", queue.getLastMail());

        String helo1 = "abgsfe3rsf.de";
        String helo2 = "james.apache.org";
        String mail = "sender";
        String rcpt = "recipient";

        smtpProtocol1.sendCommand("helo", helo1);
        smtpProtocol1.setSender(mail);
        smtpProtocol1.addRecipient(rcpt);

        // this should give a 501 code cause the helo not equal reverse of
        // ip
        assertEquals("expected error: helo not equals reverse of ip", 501, smtpProtocol1.getReplyCode());

        smtpProtocol1.sendCommand("helo", helo2);
        smtpProtocol1.setSender(mail);
        smtpProtocol1.addRecipient(rcpt);

        // helo is resolvable. so this should give a 250 code
        assertEquals("Helo accepted", 250, smtpProtocol1.getReplyCode());

        smtpProtocol1.quit();
    } finally {
        dnsServer.setLocalhostByName(null);
    }
}

From source file:org.apache.james.smtpserver.SMTPServerTest.java

@Test
public void testEhloResolvDefault() throws Exception {
    init(smtpConfiguration);/*from   ww w . j  a  va2s .  co  m*/

    SMTPClient smtpProtocol1 = new SMTPClient();
    smtpProtocol1.connect("127.0.0.1", smtpListenerPort);

    smtpProtocol1.sendCommand("ehlo", "abgsfe3rsf.de");
    // ehlo should not be checked. so this should give a 250 code
    assertEquals("ehlo accepted", 250, smtpProtocol1.getReplyCode());

    smtpProtocol1.quit();
}

From source file:org.apache.james.smtpserver.SMTPServerTest.java

@Test
public void testReverseEqualsEhlo() throws Exception {
    smtpConfiguration.setReverseEqualsEhlo();
    smtpConfiguration.setAuthorizedAddresses("192.168.0.1");
    // temporary alter the loopback resolution
    InetAddress jamesDomain = null;
    try {/*from w w  w.  j a v  a  2 s.co  m*/
        jamesDomain = dnsServer.getByName("james.apache.org");
    } catch (UnknownHostException e) {
        fail("james.apache.org currently cannot be resolved (check your DNS/internet connection/proxy settings to make test pass)");
    }
    dnsServer.setLocalhostByName(jamesDomain);
    try {
        init(smtpConfiguration);

        SMTPClient smtpProtocol1 = new SMTPClient();
        smtpProtocol1.connect("127.0.0.1", smtpListenerPort);

        assertTrue("first connection taken", smtpProtocol1.isConnected());

        // no message there, yet
        assertNull("no mail received by mail server", queue.getLastMail());

        String ehlo1 = "abgsfe3rsf.de";
        String ehlo2 = "james.apache.org";
        String mail = "sender";
        String rcpt = "recipient";

        smtpProtocol1.sendCommand("ehlo", ehlo1);
        smtpProtocol1.setSender(mail);
        smtpProtocol1.addRecipient(rcpt);

        // this should give a 501 code cause the ehlo not equals reverse of
        // ip
        assertEquals("expected error: ehlo not equals reverse of ip", 501, smtpProtocol1.getReplyCode());

        smtpProtocol1.sendCommand("ehlo", ehlo2);
        smtpProtocol1.setSender(mail);
        smtpProtocol1.addRecipient(rcpt);

        // ehlo is resolvable. so this should give a 250 code
        assertEquals("ehlo accepted", 250, smtpProtocol1.getReplyCode());

        smtpProtocol1.quit();
    } finally {
        dnsServer.setLocalhostByName(null);
    }
}

From source file:org.apache.james.smtpserver.SMTPServerTest.java

@Test
public void testAuthCancel() throws Exception {
    smtpConfiguration.setAuthorizedAddresses("127.0.0.1/8");
    smtpConfiguration.setAuthorizingAnnounce();
    init(smtpConfiguration);//  w ww .  j  av  a2 s  .  co  m

    SMTPClient smtpProtocol = new SMTPClient();
    smtpProtocol.connect("127.0.0.1", smtpListenerPort);

    smtpProtocol.sendCommand("ehlo", InetAddress.getLocalHost().toString());

    smtpProtocol.sendCommand("AUTH PLAIN");

    assertEquals("start auth.", 334, smtpProtocol.getReplyCode());

    smtpProtocol.sendCommand("*");

    assertEquals("cancel auth.", 501, smtpProtocol.getReplyCode());

    smtpProtocol.quit();

}

From source file:org.apache.james.smtpserver.SMTPServerTest.java

@Test
public void testAuth() throws Exception {
    smtpConfiguration.setAuthorizedAddresses("128.0.0.1/8");
    smtpConfiguration.setAuthorizingAnnounce();
    init(smtpConfiguration);//  w  w  w . ja  v a 2  s . c o m

    SMTPClient smtpProtocol = new SMTPClient();
    smtpProtocol.connect("127.0.0.1", smtpListenerPort);

    smtpProtocol.sendCommand("ehlo", InetAddress.getLocalHost().toString());
    String[] capabilityRes = smtpProtocol.getReplyStrings();

    List<String> capabilitieslist = new ArrayList<String>();
    for (int i = 1; i < capabilityRes.length; i++) {
        capabilitieslist.add(capabilityRes[i].substring(4));
    }

    assertTrue("anouncing auth required", capabilitieslist.contains("AUTH LOGIN PLAIN"));
    // is this required or just for compatibility?
    // assertTrue("anouncing auth required",
    // capabilitieslist.contains("AUTH=LOGIN PLAIN"));

    String userName = "test_user_smtp";
    String noexistUserName = "noexist_test_user_smtp";
    String sender = "test_user_smtp@localhost";
    smtpProtocol.sendCommand("AUTH FOO", null);
    assertEquals("expected error: unrecognized authentication type", 504, smtpProtocol.getReplyCode());

    smtpProtocol.setSender(sender);

    smtpProtocol.addRecipient("mail@sample.com");
    assertEquals("expected 530 error", 530, smtpProtocol.getReplyCode());

    assertFalse("user not existing", usersRepository.contains(noexistUserName));

    smtpProtocol.sendCommand("AUTH PLAIN");
    smtpProtocol.sendCommand(Base64.encodeAsString("\0" + noexistUserName + "\0pwd\0"));
    // smtpProtocol.sendCommand(noexistUserName+"pwd".toCharArray());
    assertEquals("expected error", 535, smtpProtocol.getReplyCode());

    usersRepository.addUser(userName, "pwd");

    smtpProtocol.sendCommand("AUTH PLAIN");
    smtpProtocol.sendCommand(Base64.encodeAsString("\0" + userName + "\0wrongpwd\0"));
    assertEquals("expected error", 535, smtpProtocol.getReplyCode());

    smtpProtocol.sendCommand("AUTH PLAIN");
    smtpProtocol.sendCommand(Base64.encodeAsString("\0" + userName + "\0pwd\0"));
    assertEquals("authenticated", 235, smtpProtocol.getReplyCode());

    smtpProtocol.sendCommand("AUTH PLAIN");
    assertEquals("expected error: User has previously authenticated.", 503, smtpProtocol.getReplyCode());

    smtpProtocol.addRecipient("mail@sample.com");
    smtpProtocol.sendShortMessageData("Subject: test\r\n\r\nTest body testAuth\r\n");

    smtpProtocol.quit();

    // mail was propagated by SMTPServer
    assertNotNull("mail received by mail server", queue.getLastMail());
}

From source file:org.apache.james.smtpserver.SMTPServerTest.java

@Test
public void testDNSRBLNotRejectAuthUser() throws Exception {
    smtpConfiguration.setAuthorizedAddresses("192.168.0.1/32");
    smtpConfiguration.setAuthorizingAnnounce();
    smtpConfiguration.useRBL(true);//from www .  j  ava2  s. c  om
    init(smtpConfiguration);

    dnsServer.setLocalhostByName(InetAddress.getByName("127.0.0.1"));

    SMTPClient smtpProtocol = new SMTPClient();
    smtpProtocol.connect("127.0.0.1", smtpListenerPort);

    smtpProtocol.sendCommand("ehlo", InetAddress.getLocalHost().toString());
    String[] capabilityRes = smtpProtocol.getReplyStrings();

    List<String> capabilitieslist = new ArrayList<String>();
    for (int i = 1; i < capabilityRes.length; i++) {
        capabilitieslist.add(capabilityRes[i].substring(4));
    }

    assertTrue("anouncing auth required", capabilitieslist.contains("AUTH LOGIN PLAIN"));
    // is this required or just for compatibility? assertTrue("anouncing
    // auth required", capabilitieslist.contains("AUTH=LOGIN PLAIN"));

    String userName = "test_user_smtp";
    String sender = "test_user_smtp@localhost";

    smtpProtocol.setSender(sender);

    usersRepository.addUser(userName, "pwd");

    smtpProtocol.sendCommand("AUTH PLAIN");
    smtpProtocol.sendCommand(Base64.encodeAsString("\0" + userName + "\0pwd\0"));
    assertEquals("authenticated", 235, smtpProtocol.getReplyCode());

    smtpProtocol.addRecipient("mail@sample.com");
    assertEquals("authenticated.. not reject", 250, smtpProtocol.getReplyCode());

    smtpProtocol.sendShortMessageData("Subject: test\r\n\r\nTest body testDNSRBLNotRejectAuthUser\r\n");

    smtpProtocol.quit();

    // mail was propagated by SMTPServer
    assertNotNull("mail received by mail server", queue.getLastMail());
}

From source file:org.apache.james.smtpserver.SMTPServerTest.java

@Test
public void testDNSRBLRejectWorks() throws Exception {
    smtpConfiguration.setAuthorizedAddresses("192.168.0.1/32");
    smtpConfiguration.useRBL(true);/*w  ww. j ava 2  s  . c om*/
    init(smtpConfiguration);

    dnsServer.setLocalhostByName(InetAddress.getByName("127.0.0.1"));

    SMTPClient smtpProtocol = new SMTPClient();
    smtpProtocol.connect("127.0.0.1", smtpListenerPort);

    smtpProtocol.sendCommand("ehlo", InetAddress.getLocalHost().toString());

    String sender = "test_user_smtp@localhost";

    smtpProtocol.setSender(sender);

    smtpProtocol.addRecipient("mail@sample.com");
    assertEquals("reject", 554, smtpProtocol.getReplyCode());

    smtpProtocol.sendShortMessageData("Subject: test\r\n\r\nTest body testDNSRBLRejectWorks\r\n");

    smtpProtocol.quit();

    // mail was rejected by SMTPServer
    assertNull("mail reject by mail server", queue.getLastMail());
}

From source file:org.apache.james.smtpserver.SMTPServerTest.java

@Test
public void testAddressBracketsEnforcementDisabled() throws Exception {
    smtpConfiguration.setAddressBracketsEnforcement(false);
    init(smtpConfiguration);/*from w w  w . ja  va  2s.  c  o  m*/
    SMTPClient smtpProtocol = new SMTPClient();
    smtpProtocol.connect("127.0.0.1", smtpListenerPort);

    smtpProtocol.sendCommand("ehlo", InetAddress.getLocalHost().toString());

    smtpProtocol.sendCommand("mail from:", "test@localhost");
    assertEquals("accept", 250, smtpProtocol.getReplyCode());

    smtpProtocol.sendCommand("rcpt to:", "mail@sample.com");
    assertEquals("accept", 250, smtpProtocol.getReplyCode());

    smtpProtocol.quit();

    smtpProtocol.connect("127.0.0.1", smtpListenerPort);

    smtpProtocol.sendCommand("ehlo", InetAddress.getLocalHost().toString());

    smtpProtocol.sendCommand("mail from:", "<test@localhost>");
    assertEquals("accept", 250, smtpProtocol.getReplyCode());

    smtpProtocol.sendCommand("rcpt to:", "<mail@sample.com>");
    assertEquals("accept", 250, smtpProtocol.getReplyCode());

    smtpProtocol.quit();
}

From source file:org.apache.james.smtpserver.SMTPServerTest.java

@Test
public void testAddressBracketsEnforcementEnabled() throws Exception {
    init(smtpConfiguration);//from   ww  w. j  av  a 2s  .c o  m
    SMTPClient smtpProtocol = new SMTPClient();
    smtpProtocol.connect("127.0.0.1", smtpListenerPort);

    smtpProtocol.sendCommand("ehlo", InetAddress.getLocalHost().toString());

    smtpProtocol.sendCommand("mail from:", "test@localhost");
    assertEquals("reject", 501, smtpProtocol.getReplyCode());
    smtpProtocol.sendCommand("mail from:", "<test@localhost>");
    assertEquals("accept", 250, smtpProtocol.getReplyCode());

    smtpProtocol.sendCommand("rcpt to:", "mail@sample.com");
    assertEquals("reject", 501, smtpProtocol.getReplyCode());
    smtpProtocol.sendCommand("rcpt to:", "<mail@sample.com>");
    assertEquals("accept", 250, smtpProtocol.getReplyCode());

    smtpProtocol.quit();
}