====== Exim4 - Test sending emails ====== ===== Using Telnet ===== telnet localhost 25 Result Trying 127.0.0.1… Connected to localhost. Escape character is ‘^]’. 220 mail.sharewiz.net ESMTP exim ehlo client 250-mail.sharewiz.net 250-PIPELINING 250-SIZE 10240000 250-ETRN 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN ===== Using openssl ===== % openssl s_client -starttls smtp -connect mail.sharewiz.net:25 Result 250 DSN ehlo client 250-mail.sharewiz.net 250-PIPELINING 250-SIZE 10240000 250-ETRN 250-AUTH PLAIN LOGIN 250-AUTH=PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN auth login 334 VXNlcm5hbWU6 Y2xlbWVudEBmb3J1bWFuYWxvZ3VlLmZy 334 UGFzc3dvcmQ6 Q2xlbWVudDAx DONE ===== Using swaks ===== apt-get install swaks libnet-ssleay-perl Test the connection: swaks -a -tls -q HELO -s localhost -au your_user -ap '<>' Result === Trying localhost:25... === Connected to localhost. <- 220 debianwb ESMTP Exim 4.76 Thu, 04 Aug 2011 14:22:02 +0600 -> EHLO debianwb <- 250-debianwb Hello localhost [127.0.0.1] <- 250-SIZE 52428800 <- 250-PIPELINING <- 250-STARTTLS <- 250 HELP -> STARTTLS <- 220 TLS go ahead === TLS started w/ cipher DHE-RSA-AES256-SHA ~> EHLO debianwb <~ 250-debianwb Hello localhost [127.0.0.1] <~ 250-SIZE 52428800 <~ 250-PIPELINING <~ 250 HELP ~> QUIT <~ 221 evie closing connection Note that above we are sending an empty password while testing with the swaks tool. ===== Sending a test email ===== Sending a mail from command line with: echo "Test" | mail -s Testmail foo.bar@gmail.com or exim -bt recipient@address to see what Exim thinks should be done with a particular address, and add **-d** to the command-line to get more debugging information (but beware that there can be a lot to pick through). ===== Check the logs for success ===== Succesful logs would have something like 2011-01-01 20:45:24 1PZ7OG-0001Vp-Rx <= root@gustav U=root P=local S=360 2011-01-01 20:45:26 1PZ7OG-0001Vp-Rx => foo.bar@gmail.com R=dnslookup T=remote_smtp H=gmail-smtp-in.l.google.com [209.85.229.27] X=TLS1.0:RSA_ARCFOUR_MD5:16 DN="C=US,ST=California,L=Mountain View,O=Google Inc,CN=mx.google.com" 2011-01-01 20:45:26 1PZ7OG-0001Vp-Rx Completed Unsuccessful logs would have something like: 2011-01-01 20:50:08 1PZ7Sq-0001X9-L4 <= <> R=1PZ7Sq-0001X7-Jo U=Debian-exim P=local S=1780 2011-01-01 20:50:11 1PZ7Sq-0001X9-L4 => newsletter@foo.bar R=dnslookup T=remote_smtp H=mx1.emailsrvr.com [98.129.184.3] X=TLS1.0:RSA_AES_256_CBC_SHA1:32 DN="C=US,O=mx1.emailsrvr.com,OU=GT21850092,OU=See www.geotrust.com/resources/cps (c)08,OU=Domain Control Validated - QuickSSL(R),CN=mx1.emailsrvr.com" 2011-01-01 20:50:11 1PZ7Sq-0001X9-L4 Completed The **R=** is saying that this item is a bounce and the message-id given in the R= part is the original message-id which failed. You'll need to look at the log-entry for that to see what recipient address was generated and why it failed. ===== Using a PHP script ===== IPs may be different so run **dig smtp.sharewiz.net** and use the IPs it returns instead. Add this to bind or into /etc/hosts 123.123.123.123 smtp.sharewiz.net Save this to a PHP file, replacing test@example.com with an email address you control. #!/usr/local/bin/php If the earlier **dig** command returned multiple IPs then save this to a PHP file and run it while the above is running also. Every 5ms - 15ms it will toggle the entry in the hosts file for smtp.sharewiz.net between the two IPs that it resolves to for example 123.123.123.123 and 234.234.234.234. #!/usr/local/bin/php /etc/hosts 2>&1'); usleep(10000 + rand(-5000,5000)); } **NOTE**: hosts_require_auth = * and hosts_require_tls = * also works if IPv6 support isn't needed.