www.fromthevalley.com.au

Linux box to relay to O365 via connector

Back in the day, debian had an amazing tool called SSMTP where you just enabeld it as a relay, pointed it to a local SMTP service and BOOM.

 

Since that package was made unavailable, we go looking for alternatives.

 

Please note the below works in it's simpliest form for all SMTP conncetions to be relayed to the host.

Install postfix( use apt-get install postfix)

SELECT SMARTHOST

Then configure it

 

vi /etc/postfix/main.cf

 

-----------------

# See /usr/share/postfix/main.cf.dist for a commented, more complete version


# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on
# fresh installs.
compatibility_level = 2



# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = minime.mi.local
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $myhostname, minime.mi.local, localhost.mi.local, , localhost
relayhost = [CONNECTOR-IN-O365.mail.protection.outlook.com]:25
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
---------------------- ---------------------- ---------------------- ---------------------- ---------------------- ----------------------

 

Restart service /etc/init.d/postfix restart

 

Then write to the mail socket in perl like:

 

 -----------------------------------------------------

use Net::SMTP::TLS;
use MIME::Lite;

            ### Create the multipart container
            my $msg = MIME::Lite->new (
              From =>  '[email protected]',
              To => '[email protected]',
              Subject => 'this is a test',
              Type =>'multipart/mixed'
            ) or print "Error creating multipart container: $!\n";


            ### Add the text message part
            $msg->attach (
              Type => 'text/html',
              Data => 'body data is here'
            ) or die "Error adding the text message part: $!\n";
            ### Add the text message part
            ### Send the Message

           MIME::Lite->send("sendmail"," /usr/bin/mail -oi - oem", Timeout => 60) || print "error\n\n";


           $msg->send;

----------------------------------------------

 

HOMEAJAXAPACHEBizphoneCSSDNSGeneralGraphicsHTMLHardwareJavascriptLinuxMACMS SQLMailMicrosoftOFFICE 365PerlPostgresSEOSocial MediaVMwareWindows 10