I've recently gotten Exim4 to send mail from the BBB with Debian, using the Gmail SMTP server. (I tried using the BBB as the server with SMTP port 25, but my ISP [Comcast] blocks that port to prevent spam.) I am running code to monitor a sensor, and wanted an email alert to me at certain detected values. Here are the general steps:
1. Tell Google that you'll be sending email from your BBB. From a browser on the BBB, sign in to your gmail account at:
2. Open port 587. For this you need to be root. Check your iptables (firewall) first to see if 587 is already open:
# iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
3. Install and configure exim4 as root. This is the package that sends the email.
Now, configure exim as root:
# dpkg-reconfigure exim4-config
in the dialog, answer as follows:
| Configuration type | mail sent by smarthost; received via SMTP or fetchmail |
| System mail name | localhost |
| IP-addresses to listen on for incoming SMTP connections | 127.0.0.1 ; ::1 (to refuse external connections) |
| Other destinations for which mail is accepted | leave empty |
| Machines to relay mail for | leave empty |
| IP address or host name of the outgoing smarthost | smtp.gmail.com::587 |
| Hide local mail name in outgoing mail ? | yes |
| Keep number of DNS-queries minimal (Dial-on-Demand) ? | no |
| Delivery method for local mail | mbox format in /var/mail/ |
| Split configuration into small files ? | no
|
check /etc/exim4/update-exim4.conf.conf to see if the file looks like the below, and if not, change it:
dc_eximconfig_configtype='smarthost'
dc_other_hostnames=''
dc_local_interfaces='127.0.0.1 ; ::1'
dc_readhost=''
dc_relay_domains=''
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost='smtp.gmail.com::587'
CFILEMODE='644'
dc_use_split_config='false'
dc_hide_mailname='true'
dc_mailname_in_oh='true'
dc_localdelivery='mail_spool'
Then modify /etc/exim4/passwd.client to (substitute your gmail name and pwd):
gmail-smtp.l.google.com:yourgm...@gmail.com:yourpassword
*.google.com:yourgm...@gmail.com:yourpassword
smtp.gmail.com:yourema...@gmail.com:yourpassword
Change permissions, etc
# chown root:Debian-exim /etc/exim4/passwd.client
# chmod 640 /etc/exim4/passwd.client
restart Exim
# update-exim4.conf
# invoke-rc.d exim4 restart
4. Test sending mail
you can do this in perl, for example:
#!/usr/bin/perl
$to = 'some-email-address';
$from = 'yourgm...@gmail.com';
$subject = 'Test Email';
$message = 'This is test email sent by Perl Script';
open(MAIL, "|/usr/sbin/sendmail -t");
print MAIL "To: $to\n";
print MAIL "From: $from\n";
print MAIL "Subject: $subject\n\n";
print MAIL $message;
close(MAIL);
print "Email Sent Successfully\n";
or another way it to create a file called mail-body.txt:
to : some-email-address
from : yourgmailname@gmail.com
subject : Test mail
This is the first mail sent by my server's sendmail !
and then do
# cat mail-body.txt | sendmail -t
if mail is not sending, then check /var/log/exim4/mainlog for errors.
# tail /var/log/exim4/mainlog
good luck!