Showing posts with label Sendmail. Show all posts
Showing posts with label Sendmail. Show all posts

Tuesday, March 17, 2009

GMail as smarthost for Solaris Sendmail

In this article, I am publishing my experience with gmail as smarthost configuration for a Solaris box at home.

I tried this one on a X86 based Solaris 10 box at home.

VERY IMPORTANT: READ IT CAREFULLY!: Please note that this is NOT a professional installation/configuration or even standard way of configuration of email for any "professional" use. During this experiment, I found that yahoo mail does not support mails from such source. If this is the case, then I doubt that many other mail sites also will not accept mails from this kind of setup. However, I could send mails to other gmail users. With that said, this may be a solution for gmail users but not for any other users... rest you may try and let me know :-)



# ping gmail.com
gmail.com is alive

# cat /etc/resolv.conf
nameserver 192.168.1.1

# ifconfig -a
lo0: flags=2001000849 mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
sfe0: flags=1000843 mtu 1500 index 2
inet 192.168.1.2 netmask ffffff00 broadcast 192.168.15.255
ether 0:e0:18:87:98:df

# /usr/sbin/dig -t mx gmail.com

; <<>> DiG 9.3.4-P1 <<>> -t mx gmail.com
;; global options: printcmd
;; connection timed out; no servers could be reached


# cat /etc/hosts
#
# Internet host table
#
127.0.0.1 localhost
::1 localhost
192.168.1.2 hawaii.tstserver.com hawaii loghost


# echo "nameserver 208.67.222.222" >> /etc/resolv.conf
# echo "nameserver 208.67.220.220" >> /etc/resolv.conf

# /usr/sbin/dig -t mx gmail.com


; <<>> DiG 9.3.4-P1 <<>> -t mx gmail.com
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1309
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;gmail.com. IN MX

;; ANSWER SECTION:
gmail.com. 2671 IN MX 5 gmail-smtp-in.l.google.com.
gmail.com. 2671 IN MX 10 alt1.gmail-smtp-in.l.google.com.
gmail.com. 2671 IN MX 20 alt2.gmail-smtp-in.l.google.com.
gmail.com. 2671 IN MX 30 alt3.gmail-smtp-in.l.google.com.
gmail.com. 2671 IN MX 40 alt4.gmail-smtp-in.l.google.com.

;; Query time: 34 msec
;; SERVER: 208.67.222.222#53(208.67.222.222)
;; WHEN: Mon Mar 16 21:27:59 2009
;; MSG SIZE rcvd: 150


# echo "DIG command output is now as it should be"
DIG command output is now as it should be

NOTE: Take the backup of /etc/mail original directory (just in case if you want to restore original settings):

# cp -pr /etc/mail /export/home/admin_stuff/mail-BAK

# svcs -a | grep -i mail
online 13:21:20 svc:/network/smtp:sendmail

# ps -eaf | grep -i mail
root 624 1 0 13:21:25 ? 0:01 /usr/lib/sendmail -bd -q15m
smmsp 625 1 0 13:21:25 ? 0:00 /usr/lib/sendmail -Ac -q15m

# cd /etc/mail

# ls -l

-rw-r--r-- 1 root bin 1423 Feb 28 2008 aliases
-rw-r----- 1 root smmsp 40960 Aug 10 2008 aliases.db
drwxr-xr-x 9 root mail 512 Aug 10 2008 cf
-rw-r--r-- 1 root bin 5449 Dec 21 2006 helpfile
-r--r--r-- 1 root bin 39953 Feb 28 2008 local.cf
-rw-r--r-- 1 root bin 0 Feb 28 2008 local-host-names
-rw-r--r-- 1 root bin 163 Jan 21 2005 Mail.rc
-rw-r--r-- 1 root bin 1839 Feb 28 2008 mailx.rc
lrwxrwxrwx 1 root root 11 Aug 10 2008 main.cf -> sendmail.cf
-r--r--r-- 1 root bin 39875 Feb 28 2008 sendmail.cf
lrwxrwxrwx 1 root root 8 Aug 10 2008 sendmail.hf -> helpfile
-r--r--r-- 1 root bin 40259 Oct 31 23:46 submit.cf
lrwxrwxrwx 1 root root 11 Aug 10 2008 subsidiary.cf -> sendmail.cf
-rw-r--r-- 1 root bin 5 Feb 28 2008 trusted-users

# cd cf/cf/
# pwd

/etc/mail/cf/cf

# ls -l
total 264
-r--r--r-- 1 root mail 39953 Aug 8 2007 local.cf
-r--r--r-- 1 root mail 1814 Dec 21 2006 local.mc
lrwxrwxrwx 1 root root 11 Aug 10 2008 main.cf -> sendmail.cf
lrwxrwxrwx 1 root root 11 Aug 10 2008 main.mc -> sendmail.mc
-r--r--r-- 1 root mail 3298 Dec 21 2006 Makefile
-r--r--r-- 1 root mail 39875 Aug 8 2007 sendmail.cf
-r--r--r-- 1 root mail 1187 Jan 21 2005 sendmail.mc
-r--r--r-- 1 root mail 40216 Aug 8 2007 submit.cf
-r--r--r-- 1 root mail 843 Jan 21 2005 submit.mc
lrwxrwxrwx 1 root root 11 Aug 10 2008 subsidiary.cf -> sendmail.cf
lrwxrwxrwx 1 root root 11 Aug 10 2008 subsidiary.mc -> sendmail.mc

Add the following lines in /etc/mail/cf/cf/local.mc file.

# ----------FOLLOWING IS ADDED FOR GMAIL CONFIGURATION ------------------------
define(`SMART_HOST',`smtp.gmail.com')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
FEATURE(`authinfo',`hash /etc/mail/auth/client-info')dnl
define(`CERT_DIR', `MAIL_SETTINGS_DIR`'certs')dnl
define(`confCACERT_PATH', `CERT_DIR')dnl
define(`confCACERT', `CERT_DIR/CAcert.pem')dnl
define(`confSERVER_CERT', `CERT_DIR/mycert.pem')dnl
define(`confSERVER_KEY', `CERT_DIR/mykey.pem')dnl
define(`confCLIENT_CERT', `CERT_DIR/mycert.pem')dnl
define(`confCLIENT_KEY', `CERT_DIR/mykey.pem')dnl
# --------------END OF SPECIAL CONFIGURATION FOR GMAIL ------------------------

# mkdir /etc/mail/auth
# touch /etc/mail/auth/client-info

# cat /etc/mail/auth/client-info

AuthInfo:smtp.gmail.com "U:root" "I:somemailid@gmail.com" "P:password_of_somemailid"

# cd /etc/mail/auth

# pwd

/etc/mail/auth

# ls -l
-rw-r--r-- 1 root root 75 Mar 16 22:39 client-info

# /usr/sbin/makemap hash client-info < client-info

# ls -l

-rw-r--r-- 1 root root 75 Mar 16 22:39 client-info
-rw-r----- 1 root root 24576 Mar 16 22:40 client-info.db

# chown -R root:mail /etc/mail/auth
# chmod 700 /etc/mail/auth
# chmod 600 /etc/mail/auth/*
# ls -l

-rw------- 1 root mail 75 Mar 16 22:39 client-info
-rw------- 1 root mail 24576 Mar 16 22:40 client-info.db

# mkdir /etc/mail/certs
# cd /etc/mail/certs
# pwd

/etc/mail/certs

# /usr/sfw/bin/openssl dsaparam 1024 -out dsa1024.pem
Generating DSA parameters, 1024 bit long prime
This could take some time
.....+++++++++++++++++++++++++++++++++++++++++++++++++++*
.+............+.+.........+.........+.............+..........+........+..........+.......................+.+.+......+....+.+..+..
.+................+..+.....+...+........+........+.+.......+..........+............+...........+........................+......+.
....+............+.................+.....+..+.+...+.................+..+...+.+..............+..................+.+....+..+......+
..+..................+.....+.+...+.................+.....+.............+..........+..+.....+.+...................................
..........+........+............+.....+.........+++++++++++++++++++++++++++++++++++++++++++++++++++*

# ls -l
-rw-r--r-- 1 root root 455 Mar 16 22:46 dsa1024.pem

# /usr/sfw/bin/openssl req -x509 -nodes -days 3650 -newkey dsa:dsa1024.pem -out /etc/mail/certs/mycert.pem -keyout /etc/mail/certs/mykey.pem
Generating a 1024 bit DSA private key
writing new private key to '/etc/mail/certs/mykey.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [US]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Unconfigured OpenSSL Installation]:PRIVATE HOME INSTALLATION
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:
Email Address []:

# ls -l
-rw-r--r-- 1 root root 455 Mar 16 22:46 dsa1024.pem
-rw-r--r-- 1 root root 1322 Mar 16 22:49 mycert.pem
-rw-r--r-- 1 root root 668 Mar 16 22:49 mykey.pem

# rm dsa1024.pem
# chown -R root:mail .
# chmod 700 .
# chmod 600 *
# pwd

/etc/mail/certs

# ls -l
-rw------- 1 root mail 1322 Mar 16 22:49 mycert.pem
-rw------- 1 root mail 668 Mar 16 22:49 mykey.pem

# pwd
/etc/mail/certs
# cd ..
# ls -l

-rw-r--r-- 1 root bin 1423 Feb 28 2008 aliases
-rw-r----- 1 root smmsp 40960 Aug 10 2008 aliases.db
drwx------ 2 root mail 512 Mar 16 22:40 auth
drwx------ 2 root mail 512 Mar 16 22:50 certs
drwxr-xr-x 9 root mail 512 Aug 10 2008 cf
-rw-r--r-- 1 root bin 5449 Dec 21 2006 helpfile
-r--r--r-- 1 root bin 39953 Feb 28 2008 local.cf
-rw-r--r-- 1 root bin 0 Feb 28 2008 local-host-names
-rw-r--r-- 1 root bin 163 Jan 21 2005 Mail.rc
-rw-r--r-- 1 root bin 1839 Feb 28 2008 mailx.rc
lrwxrwxrwx 1 root root 11 Aug 10 2008 main.cf -> sendmail.cf
-r--r--r-- 1 root bin 39875 Feb 28 2008 sendmail.cf
lrwxrwxrwx 1 root root 8 Aug 10 2008 sendmail.hf -> helpfile
-r--r--r-- 1 root bin 40259 Oct 31 23:46 submit.cf
lrwxrwxrwx 1 root root 11 Aug 10 2008 subsidiary.cf -> sendmail.cf
-rw-r--r-- 1 root bin 5 Feb 28 2008 trusted-users




# pwd
/etc/mail/cf/cf

# /usr/ccs/bin/make
test ! -f sendmail.cf || /usr/bin/mv sendmail.cf sendmail.cf.prev
/usr/ccs/bin/m4 ../m4/cf.m4 sendmail.mc > sendmail.cf

# /usr/ccs/bin/make install

# ls -ltr
total 354
-r--r--r-- 1 root mail 1187 Jan 21 2005 sendmail.mc
-r--r--r-- 1 root mail 843 Jan 21 2005 submit.mc
-r--r--r-- 1 root mail 3298 Dec 21 2006 Makefile
-r--r--r-- 1 root mail 1814 Dec 21 2006 local.mc
-r--r--r-- 1 root mail 39875 Aug 8 2007 sendmail.cf.prev
-r--r--r-- 1 root mail 40216 Aug 8 2007 submit.cf
-r--r--r-- 1 root mail 39953 Aug 8 2007 local.cf
lrwxrwxrwx 1 root root 11 Aug 10 2008 main.cf -> sendmail.cf
lrwxrwxrwx 1 root root 11 Aug 10 2008 main.mc -> sendmail.mc
lrwxrwxrwx 1 root root 11 Aug 10 2008 subsidiary.cf -> sendmail.cf
lrwxrwxrwx 1 root root 11 Aug 10 2008 subsidiary.mc -> sendmail.mc
-rw-r--r-- 1 root root 40016 Mar 16 22:55 sendmail.cf

# pwd
/etc/mail/cf/cf

# /etc/init.d./sendmail stop
# /etc/init.d/sendmail start # echo "Test" | mailx -s "Test" somegmailuser@gmail.com




Hurrah! Its working!!! I got the mail at somegmailuser@gmail.com from my system's command line.

Friday, January 11, 2008

Configuring sendmail for Solaris

In Solaris 10, here is how I will set the mail to work:

1) Get the name of SMTP server (suppose it is mail.somecompany.com)

2) Log on to the Solaris 10 server where mail setup is needed.

3) Goto /etc/mail directory

4) Edit file "submit.cf" and add/edit the line containing "DS" in Local info section:
DSmail.somecompany.com

5) Edit file "submit.cf" and add/edit the line containing "Dj" in Local info section:
Dj$w.somecomnapany.com

6) Done! Now send a test mail to verify if it is working.

---------

Once the submit.cf file is edited for adding the SMTP server's entry, try to send a mail from unix command prompt in verbose mode like shown below:

# cat some_test_file_name mailx -v -s "TEST MAIL" unixgeek@somecompany.com
unixgeek@somecompany.com... Connecting to mail.somecompany.com. via relay...
220 a0001-xap0130-s.hodc.ad.somecompany.com Microsoft ESMTP MAIL Service, Version: 6.0.3790.1830 ready at Fri, 11 Jan 2008 09:4 0:13 -0600
>>> EHLO abcnetbackup.somecompany.com
250-a0001-xap0130-s.hodc.ad.somecompany.com Hello [10.40.254.22]
250-TURN
250-SIZE 15728640
250-ETRN
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-8bitmime
250-BINARYMIME
250-CHUNKING
250-VRFY
250 OK
>>> MAIL From: SIZE=1178
250 2.1.0 root@abcnetbackup.somecompany.com....Sender OK
>>> RCPT To:
>>> DATA
250 2.1.5 unixgeek@somecompany.com
354 Start mail input; end with .
>>> .
250 2.6.0 <200801111540.m0bfedrq026161@abcnetbackup.somecompany.com> Queued mail for delivery
unixgeek@somecompany.com... Sent ( <200801111540.m0bfedrq026161@abcnetbackup.somecompany.com> Queued mail for delivery)
Closing connection to mail.somecompany.com.
>>> QUIT
221 2.0.0 a0001-xap0130-s.hodc.ad.somecompany.com Service closing transmission channel


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

In the above output, try to look for the bold entries. If you are able to see the "Sent" and "Closing connection for ........" lines, it means that your server is able to talk to mail server of your company.

Happy mailing! :-)