sendmail

Sendmail is an MTA, meaning it accepts email messages sent to it using the SMTP proto-
col and transports them to another MTA email server until the messages reach their destinations. It also accepts email for the local network and delivers them to local mail spools, one for each user.

1.Mail User Agent(MUA)
A client used to compose and read e-mail(outlook,evolution,thunderbird,mutt)

2.Mail Transfer Agent(MTA)
An SMTP server used to relay or accept e-mail for delivery(posfix,sendmail,exim,qmail,exchange    server)

3.Mail Delivery Agent(MDA)
A program used by the final MTA to deliver e-mail to the  message store May be included with the  MTA or a separate  program such as procmail.

4.Mail Access Agent(MAA)
An IMAP/POP3 server used by an MUA to access the message store(Dovecot,Cyrus IMAP)

——————————————————————————————————————–
[root@mail ~]# yum install m4 telnet mailx sendmail sendmail-cf

[root@mail ~]# service sendmail start
Starting sendmail:                                         [  OK  ]

[root@mail ~]# ps -ef | grep sendmail
root       2539      1  0 04:35 ?        00:00:00 sendmail: accepting connections
smmsp      2556      1  0 04:36 ?        00:00:00 sendmail: Queue runner@01:00:00 for /var/spool/clientmqueue
root       2685   2481  0 04:38 pts/1    00:00:00 grep sendmail

[root@mail ~]# netstat -tlpn | grep 25
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      2539/sendmail

[root@mail ~]# rpm -qa sendmail*
sendmail-cf-8.14.4-9.el6.noarch
sendmail-8.14.4-9.el6.x86_64

[root@mail ~] # chkconfig sendmail on

[root@mail ~] # chkconfig –list sendmail
sendmail       0:off 1:off 2:on 3:on 4:on 5:on 6:off

[root@mail ~] # ls -l /etc/mail
total 192
-rw-r–r–. 1 root root   469 Feb  4  2015 access
-rw-r—–. 1 root root 12288 Mar 24 20:41 access.db
-rw-r–r–. 1 root root     0 Mar 24 20:42 aliasesdb-stamp
-rw-r–r–. 1 root root   233 Feb  4  2015 domaintable
-rw-r—–. 1 root root 12288 Mar 24 20:41 domaintable.db
-rw-r–r–. 1 root root  5584 Feb  4  2015 helpfile
-rw-r–r–. 1 root root    75 Mar 24 21:01 local-host-names
-rw-r–r–. 1 root root   997 Feb  4  2015 mailertable
-rw-r—–. 1 root root 12288 Mar 24 20:41 mailertable.db
-rwxr-xr-x. 1 root root  2700 Feb  4  2015 make
-rw-r–r–. 1 root root    92 Feb  4  2015 Makefile
-rw-r–r–. 1 root root 58596 Mar 24 20:55 sendmail.cf
-rw-r–r–. 1 root root  7202 Feb  4  2015 sendmail.mc
-rw-r–r–. 1 root root 41521 Feb  4  2015 submit.cf
-rw-r–r–. 1 root root   941 Feb  4  2015 submit.mc
-rw-r–r–. 1 root root   127 Feb  4  2015 trusted-users
-rw-r–r–. 1 root root  1847 Feb  4  2015 virtusertable
-rw-r—–. 1 root root 12288 Mar 24 20:41 virtusertable.db


[root@mail mail]# cat access
# Check the /usr/share/doc/sendmail/README.cf file for a description
# of the format of this file. (search for access_db in that file)
# The /usr/share/doc/sendmail/README.cf is part of the sendmail-doc
# package.
#
# If you want to use AuthInfo with “M:PLAIN LOGIN”, make sure to have the
# cyrus-sasl-plain package installed.
#
# By default we allow relaying from localhost…
Connect:localhost.localdomain RELAY
Connect:localhost RELAY
Connect:127.0.0.1 RELAY
—————————————————————————
[root@mail mail]# cat access.db
a r*�
r*�Yconnect:localhost.localdomain
8V�Zэh^RELAYconnect:localhostRELAYconnect:127.0.0.1
—————————————————————————
[root@mail mail]# cat aliasesdb-stamp
—————————————————————————
[root@mail mail]# cat domaintable
# The “domain table” can be used to provide domain name mapping.
# Use of this should really be limited to your own domains.
# It may be useful if you change names (e.g., your company
# changes names from oldname.com to newname.com)
—————————————————————————
[root@mail mail]# cat domaintable.db
s*���BI�Zэh^
—————————————————————————
[root@mail mail]# cat helpfile
#vers 2
cpyr
cpyr Copyright (c) 1998-2000, 2002, 2004-2007 Sendmail, Inc. and its suppliers.
cpyr All rights reserved.
cpyr Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
cpyr Copyright (c) 1988, 1993
cpyr The Regents of the University of California. All rights reserved.
cpyr
cpyr
cpyr By using this file, you agree to the terms and conditions set
cpyr forth in the LICENSE file which can be found at the top level of
cpyr the sendmail distribution.
cpyr
smtp This is sendmail
smtp Topics:
smtp HELO EHLO MAIL RCPT DATA
smtp RSET NOOP QUIT HELP VRFY
smtp EXPN VERB ETRN DSN AUTH
smtp STARTTLS
smtp For more info use “HELP <topic>”.
smtp To report bugs in the implementation see
smtp http://www.sendmail.org/email-addresses.html
smtp For local information send email to Postmaster at your site.
help HELP [ <topic> ]
help The HELP command gives help info.
helo HELO <hostname>
helo Introduce yourself.
ehlo EHLO <hostname>
ehlo Introduce yourself, and request extended SMTP mode.
ehlo Possible replies include:
ehlo SEND Send as mail [RFC821]
ehlo SOML Send as mail or terminal [RFC821]
ehlo SAML Send as mail and terminal [RFC821]
ehlo EXPN Expand the mailing list [RFC821]
ehlo HELP Supply helpful information [RFC821]
ehlo TURN Turn the operation around [RFC821]
ehlo 8BITMIME Use 8-bit data [RFC1652]
ehlo SIZE Message size declaration [RFC1870]
ehlo VERB Verbose [Allman]
ehlo CHUNKING Chunking [RFC1830]
ehlo BINARYMIME Binary MIME [RFC1830]
ehlo PIPELINING Command Pipelining [RFC1854]
ehlo DSN Delivery Status Notification [RFC1891]
ehlo ETRN Remote Message Queue Starting [RFC1985]
ehlo STARTTLS Secure SMTP [RFC2487]
ehlo AUTH Authentication [RFC2554]
ehlo ENHANCEDSTATUSCODES Enhanced status codes [RFC2034]
ehlo DELIVERBY Deliver By [RFC2852]
mail MAIL From:<sender> [ <parameters> ]
mail Specifies the sender. Parameters are ESMTP extensions.
mail See “HELP DSN” for details.
rcpt RCPT To:<recipient> [ <parameters> ]
rcpt Specifies the recipient. Can be used any number of times.
rcpt Parameters are ESMTP extensions. See “HELP DSN” for details.
data DATA
data Following text is collected as the message.
data End with a single dot.
rset RSET
rset Resets the system.
quit QUIT
quit Exit sendmail (SMTP).
auth AUTH mechanism [initial-response]
auth Start authentication.
starttls STARTTLS
starttls Start TLS negotiation.
verb VERB
verb Go into verbose mode. This sends 0xy responses that are
verb not RFC821 standard (but should be) They are recognized
verb by humans and other sendmail implementations.
vrfy VRFY <recipient>
vrfy Verify an address. If you want to see what it aliases
vrfy to, use EXPN instead.
expn EXPN <recipient>
expn Expand an address. If the address indicates a mailing
expn list, return the contents of that list.
noop NOOP
noop Do nothing.
send SEND FROM:<sender>
send replaces the MAIL command, and can be used to send
send directly to a users terminal. Not supported in this
send implementation.
soml SOML FROM:<sender>
soml Send or mail. If the user is logged in, send directly,
soml otherwise mail. Not supported in this implementation.
saml SAML FROM:<sender>
saml Send and mail. Send directly to the user’s terminal,
saml and also mail a letter. Not supported in this
saml implementation.
turn TURN
turn Reverses the direction of the connection. Not currently
turn implemented.
etrn ETRN [ <hostname> | @<domain> | \#<queuename> ]
etrn Run the queue for the specified <hostname>, or
etrn all hosts within a given <domain>, or a specially-named
etrn <queuename> (implementation-specific).
dsn MAIL From:<sender> [ RET={ FULL | HDRS} ] [ ENVID=<envid> ]
dsn RCPT To:<recipient> [ NOTIFY={NEVER,SUCCESS,FAILURE,DELAY} ]
dsn [ ORCPT=<recipient> ]
dsn SMTP Delivery Status Notifications.
dsn Descriptions:
dsn RET Return either the full message or only headers.
dsn ENVID Sender’s “envelope identifier” for tracking.
dsn NOTIFY When to send a DSN. Multiple options are OK, comma-
dsn delimited. NEVER must appear by itself.
dsn ORCPT Original recipient.
-bt Help for test mode:
-bt ? :this help message.
-bt .Dmvalue :define macro `m’ to `value’.
-bt .Ccvalue :add `value’ to class `c’.
-bt =Sruleset :dump the contents of the indicated ruleset.
-bt =M :display the known mailers.
-bt -ddebug-spec :equivalent to the command-line -d debug flag.
-bt $$m :print the value of macro $$m.
-bt $$=c :print the contents of class $$=c.
-bt /mx host :returns the MX records for `host’.
-bt /parse address :parse address, returning the value of crackaddr, and
-bt the parsed address.
-bt /try mailer addr :rewrite address into the form it will have when
-bt presented to the indicated mailer.
-bt /tryflags flags :set flags used by parsing. The flags can be `H’ for
-bt Header or `E’ for Envelope, and `S’ for Sender or `R’
-bt for Recipient. These can be combined, `HR’ sets
-bt flags for header recipients.
-bt /canon hostname :try to canonify hostname.
-bt /map mapname key :look up `key’ in the indicated `mapname’.
-bt /quit :quit address test mode.
-bt rules addr :run the indicated address through the named rules.
-bt Rules can be a comma separated list of rules.
control Help for smcontrol:
control help This message.
control restart Restart sendmail.
control shutdown Shutdown sendmail.
control status Show sendmail status.
control mstat Show sendmail status (machine readable format).
control memdump Dump allocated memory list (for debugging only).
—————————————————————————
[root@mail mail]# cat local-host-names
# local-host-names – include all aliases for your machine here.
—————————————————————————
[root@mail mail]# cat mailertable
# The “mailer table” can be used to override routing for particular domains
# (which are not in class {w}, i.e. local host names).
#
# hash /etc/mail/mailertable
#
# Keys in this database are fully qualified domain names or partial domains
# preceded by a dot — for example, “vangogh.CS.Berkeley.EDU” or
# “.CS.Berkeley.EDU”. As a special case of the latter, “.” matches any domain
# not covered by other keys. Values must be of the form:
#
# mailer:domain
#
# where “mailer” is the internal mailer name, and “domain” is where to send
# the message. These maps are not reflected into the message header. As a
# special case, the forms:
#
# local:user
#
# will forward to the indicated user using the local mailer,
#
# local:
#
# will forward to the original user in the e-mail address using the local
# mailer, and
#
# error:code message
# error:D.S.N:code message
#
# will give an error message with the indicated SMTP reply code and message,
# where D.S.N is an RFC 1893 compliant error code.
—————————————————————————
[root@mail mail]# cat mailertable.db
t*������Zэh^
—————————————————————————

[root@mail mail]# cat make
#!/bin/sh
# Generate db and cf files if necessary. This used to be handled by
# /etc/mail/Makefile.

teste() {
if ! test -e “$1”; then
echo “$1 doesn’t exist”
exit 2
fi
}

makedb() {
teste “${1%.db}”

if [ -z “$SM_FORCE_DBREBUILD” ]; then
test “${1%.db}” -nt “$1” || return 0
fi

if [ “$1” = userdb.db ]; then
makemap btree “$1” < “${1%.db}”
else
makemap hash “$1” < “${1%.db}”
fi
}

makealiasesdb() {
uptodate=1

if [ -z “$SM_FORCE_DBREBUILD” ]; then
files=$(grep ‘^O AliasFile=’ sendmail.cf |
while read a; do echo ${a#*=}; done)

for a in $files; do
if [ “$a” = /etc/aliases ]; then
# /etc/aliases.db may be used by other MTA, make sure nothing
# has touched it since our last newaliases call
test “$a” -nt “${a}.db” ||
test aliasesdb-stamp -nt “${a}.db” ||
test aliasesdb-stamp -ot “${a}.db” || continue
else
test “$a” -nt “${a}.db” || continue
fi

uptodate=0
break
done
else
uptodate=0
fi

[ $uptodate = 1 ] && return 0

# check if alternatives is configured to sendmail
if [ “$(readlink -e /usr/bin/newaliases)” = /usr/sbin/sendmail.sendmail ]
then
/usr/bin/newaliases > /dev/null
touch -r /etc/aliases.db aliasesdb-stamp 2> /dev/null
else
rm -f aliasesdb-stamp
fi
}

makecf() {
mc=${1%.cf}.mc

teste “$mc”

if [ -z “$SM_FORCE_CFREBUILD” ]; then
test “$mc” -nt “$1” || return 0
fi

if test -f /usr/share/sendmail-cf/m4/cf.m4; then
umask 022
[ -e “$1” ] && mv -f “$1” “$1”.bak
m4 “$mc” > “$1”
else
echo “WARNING: ‘$mc’ is modified. Please install package sendmail-cf to update your configuration.”
exit 15
fi
}

makeall() {
# These could be used by sendmail, but are not part of the default install.
# To use them you will have to generate your own sendmail.cf with
# FEATURE(‘whatever’)
test -f bitdomain && makedb bitdomain.db
test -f uudomain && makedb uudomain.db
test -f genericstable && makedb genericstable.db
test -f userdb && makedb userdb.db
test -f authinfo && makedb authinfo.db

makedb virtusertable.db
makedb access.db
makedb domaintable.db
makedb mailertable.db

makecf sendmail.cf
makecf submit.cf
}

cd /etc/mail || exit 1

[ $# -eq 0 ] && makeall

for target; do
case “$target” in
*.db)
makedb “$target”
;;
*.cf)
makecf “$target”
;;
all)
makeall
;;
aliases)
makealiasesdb
;;
clean)
rm -f *.db *~ aliasesdb-stamp
;;
start|stop|restart)
service sendmail “$target”
;;
*)
echo “Don’t know how to make $target”
exit 2
esac
done

—————————————————————————
[root@mail mail]# cat trusted-users
# trusted-users – users that can send mail as others without a warning
# apache, mailman, majordomo, uucp, are good candidates
—————————————————————————
[root@mail mail]# cat virtusertable
# A domain-specific form of aliasing, allowing multiple virtual domains to be
# hosted on one machine.
#
# info@foo.com foo-info
# info@bar.com bar-info
# joe@bar.com error:nouser 550 No such user here
# jax@bar.com error:5.7.0:550 Address invalid
# @baz.org jane@example.net
#
# then mail addressed to info@foo.com will be sent to the address foo-info,
# mail addressed to info@bar.com will be delivered to bar-info, and mail
# addressed to anyone at baz.org will be sent to jane@example.net, mail to
# joe@bar.com will be rejected with the specified error message, and mail to
# jax@bar.com will also have a RFC 1893 compliant error code 5.7.0.
#
# The username from the original address is passed as %1 allowing:
#
# @foo.org %1@example.com
#
# Additionally, if the local part consists of “user+detail” then “detail” is
# passed as %2 and “+detail” is passed as %3 when a match against user+* is
# attempted, so entries like
#
# old+*@foo.org new+%2@example.com
# gen+*@foo.org %2@example.com
# +*@foo.org %1%3@example.com
# X++@foo.org Z%3@example.com
# @bar.org %1%3
#
# Note: to preserve “+detail” for a default case (@domain) %1%3 must be used
# as RHS. There are two wildcards after “+”: “+” matches only a non-empty
# detail, “*” matches also empty details, e.g., user+@foo.org matches#
# +*@foo.org but not ++@foo.org. This can be used to ensure that the
# parameters %2 and %3 are not empty.
#
# All the host names on the left hand side (foo.com, bar.com, and baz.org)
# must be in class {w} or class {VirtHost}. The latter can be defined by the
# macros VIRTUSER_DOMAIN or VIRTUSER_DOMAIN_FILE (analogously to
# MASQUERADE_DOMAIN and MASQUERADE_DOMAIN_FILE). If VIRTUSER_DOMAIN or
# VIRTUSER_DOMAIN_FILE is used, then the entries of class {VirtHost} are
# added to class {R}, i.e., relaying is allowed to (and from) those domains.
—————————————————————————
[root@mail mail]# cat virtusertable.db
q*�&���Zэh^[
—————————————————————————
root@mail]# telnet localhost 25
Trying ::1…
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
220 mail.linuxmadeeasy.in ESMTP Sendmail 8.14.4/8.14.4; Fri, 3 Jun 2016 18:27:50 -0700
ehlo linuxmadeeasy.in
250-mail.linuxmadeeasy.in Hello localhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH GSSAPI DIGEST-MD5 CRAM-MD5
250-DELIVERBY
250 HELP
mail from:rafi@linuxmadeeasy.in
250 2.1.0 rafi@linuxmadeeasy.in… Sender ok
rcpt to:mohammedrafi494@gmail.com
250 2.1.5 mohammedrafi494@gmail.com… Recipient ok
data
354 Enter mail, end with “.” on a line by itself
subject:firstmail
hai man how are u
.
250 2.0.0 u541Rofj008779 Message accepted for delivery

quit
221 2.0.0 mail.linuxmadeeasy.in closing connection
Connection closed by foreign host.
————————————————————————–
root@mail]# vim /var/log/maillog

Jun 3 18:30:16 mail sendmail[8809]: u541Rofj008779: to=mohammedrafi494@gmail.com, delay=00:00:36, xdelay=00:00:01, mailer=relay, pri=120036, relay=a2nlvphout-v01.shr….secureserver.net. [198.71.232.2], dsn=2.0.0, stat=Sent (90PobKTMvRlXG mail accepted for delivery)


[root@mail ~]# cat >>firstfile

sendmail through file

[root@mail ~]# sendmail mohammedrafi494@gmail.com < /root/firstfile

[root@mail ~]# mail -s “Special Subject” mohammedrafi494@gmail.com < /root/mail/access

[root@mail ~]# mutt -s “Special Subject” mohammedrafi494@gmail.com < /root/mail/access

sendmail.cf

sendmail.mc

submit.cf

submit.mc

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s