# Sendmail & Fetchmail for e-mail access.

## Binestar

Having for years used sendmail and fetchmail to access all my e-mail needs from anywhere on the internet with ssh access, I had a bit of trouble getting it to work on Gentoo.  So I figured I'd write up a little Tips & Tricks.

Lets first start with what this would be used for:

Lets say you want to make a Gentoo box that handles all your e-mail, so that all your outgoing mail gets sent to your ISP's mail server, and all your incoming mail can get handled by your own spam filters on procmail or via SpamAssassin, or even just be read by Mozilla.

So we need a few things to start.

#1:  Fetchmail

#2:  Sendmail

#3:  Procmail

#4:  E-mail Client (I use pine)

so:

```

emerge sendmail

emerge m4

emerge procmail

emerge fetchmail

```

After those 4 things are installed we are ready to begin configuration.

First thing we want to do is to configure sendmail to accept e-mail only from the localmachine, as well as sending e-mail only through your ISP's mail server.

You need to edit the /etc/mail/sendmail.mc file to include the following:

```

divert(-1)

#

# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.

#       All rights reserved.

# Copyright (c) 1983 Eric P. Allman.  All rights reserved.

# Copyright (c) 1988, 1993

#       The Regents of the University of California.  All rights reserved.

#

# By using this file, you agree to the terms and conditions set

# forth in the LICENSE file which can be found at the top level of

# the sendmail distribution.

#

#

divert(0)dnl

include(`/usr/share/sendmail-cf/m4/cf.m4')dnl

define(`confDEF_USER_ID',``8:12'')dnl

VERSIONID(`$Id: sendmail.mc,v 1.2 2002/07/04 04:55:29 g2boojum Exp $')dnl

OSTYPE(linux)dnl

DOMAIN(generic)dnl

define(`SMART_HOST',`mail.yourisp.net')dnl

MASQUERADE_AS(yourisp.net)dnl

FEATURE(`allmasquerade')dnl

FEATURE(`masquerade_envelope')dnl

define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl

FEATURE(`smrsh',`/usr/sbin/smrsh')dnl

FEATURE(`local_lmtp',`/usr/sbin/mail.local')dnl

FEATURE(`local_procmail')dnl

define(`PROCMAIL_MAILER_FLAGS',`procmail -Y -m $h $g $u')dnl

define(`PROCMAIL_MAILER_ARGS',`procmail -Y -m $h $g $u')dnl

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

MAILER(procmail)dnl

MAILER(local)dnl

MAILER(smtp)dnl

Cwlocalhost.localdomain

```

What the above does is configures sendmail to forward all outgoing mail through your ISP's mail server, and all incoming mail will be sent through the procmail mailer (if there is a .procmailrc file), or through local mail/internet mail depending on destination.  It also makes sure that sendmail is *ONLY* listening on the local interface (I.E. no one from another machine on the internet can relay mail through your server.)

Now that you have a sendmail.mc file you need to use the program m4 to convert it to sendmail.cf format.

```

m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

```

Once you do that Sendmail is ready to be run.  

```

/etc/init.d/sendmail start

```

Make sure that sendmail started properly, you can check the logs in /var/log/

The next thing you want to do is to make sure it only is listening on the local interface.

```

telnet localhost smtp

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

220 mhonline.net ESMTP Sendmail 8.12.6/8.12.6; Fri, 22 Nov 2002 11:44:56 -0500

ehlo mhonline.net

250-mhonline.net Hello localhost [127.0.0.1], pleased to meet you

250-ENHANCEDSTATUSCODES

250-PIPELINING

250-EXPN

250-VERB

250-8BITMIME

250-SIZE

250-DSN

250-ETRN

250-DELIVERBY

250 HELP

quit

221 2.0.0 mhonline.net closing connection

Connection closed by foreign host.

```

Next you need to make sure it is *NOT* listening on your ethernet interface or ppp interface:

```

telnet 123.456.789.101 smtp

Trying 123.456.789.101...

telnet: Unable to connect to remote host: Connection refused

```

Obviously you would use your ethernet ip address for that test.  Once you are sure that it starts properly, You can add it to your default runlevel:

```

rc-update add sendmail default

```

Now that sendmail is installed, configured, secured, and running, you can move onto the configuration of fetchmail.

If you have just a few users, you can setup fetchmail with a user specific configuration file.

~/.fetchmailrc

```

set postmaster "username"

set bouncemail

set properties ""

set daemon 300

poll mail.yourisp.net with proto POP3

       user "ispusername" there with password "isppassword" is username here options fetchall warnings 3600

```

What this does, is sends any error messages to the local user you set as postmaster (I usually set it as your username so you can get any errors delivered to you)

It also sets fetchmail to run in the background, checking your e-mail every 300 seconds (5 minutes)

The poll option tells fetchmail to poll your isp's mail server with the POP3 protocol (That can be changed to other protocol's that fetchmail supports) 

Then it says that "ipsusername" has a password of "isppassword" and to deliver that username's mail to "username" on the local server.

The extra options say to fetch everything on the server and then delete the messages.

You can add more usernames to the fetchmailrc file if you wish, you would just add another user line to the ISP poll line, or if you have multiple POP/IMAP/etc accounts you can put another poll line in to do multiple servers.

Now you can run fetchmail from a shell.

Then you can access the mail however you prefer to.  (Pine, Mutt, Mozilla Mail, etc)

Hope that helps someone,

Binestar

chrisf@mhonline.netLast edited by Binestar on Thu Dec 12, 2002 5:36 am; edited 2 times in total

----------

## Binestar

I'd like to mention, that this configuration will only work if you run your mail client on the machine that you did this configuration on.  If you want to use a mail client that is for example on a LAN behind the Gentoo box, you would need to also bind sendmail to the LAN IP address, and install either a POP3 server or an IMAP server.

Then you would have to add your LAN subnet to the ACCESS file for sendmail and rebuild the file.

If anyone wants help with that it's very simple and I can write up a howto for that as well.

Binestar

chrisf@mhonline.net

----------

## jecepede

I have installed this too but ehhrr.....

I have my own domain and I send to user1@mydomian.nl and user2@mydomain.nl but fetchmail only delivers to root@localhost and not to user1 and user2 ?

I added all the users in this way :

useradd -m user1

passwd user1

but fetchmail doest deliver to the different users  :Sad: 

Greets 

Jessy

----------

## Binestar

Fetchmail *CAN* be configured to deliver to different users.

For example:  You want one global fetchmailrc file that can get 5 different e-mail addresses from 2 different ISP's and send it to 3 different users on your system.

An example fetchmailrc file would be:

```

set postmaster "johndoe"

set bouncemail

set properties ""

set daemon 300

poll mail.isp1.net with proto POP3

       user "johndoe" there with password "password1" is johndoe here options fetchall warnings 3600

       user "janedoe" there with password "password2" is janedoe here options fetchall warnings 3600

       user "johnd" there with password "password3" is johndoe here

options fetchall warnings 3600

poll mail.isp2.com with proto POP3

       user "jasondoe" there with password "password4" is jasondoe here

options fetchall warnings 3600

       user "marydoe" there with password "password5" is jasondoe here

options fetchall warnings 3600

```

obviously users johndoe janedoe and jasondoe would need to be on the local system.

Binestar

----------

## jecepede

Thanx Binestar, that really did the trick  :Very Happy: 

I now do something else too, I configured .forward - file to send the mail after scanning (with amavis) to another pop box..

However, can I make it so that I get an e-mail notification on my phone ? I need to make a new mail like "You have new mail from johndoe@domain.nl" 

When I send with a random mail-thingy (like hotmail or yahoo) to myphonenumberr@gin.nl, the Gin-company forwards it to my phone....

Can that be made ????

Greets 

Jessy

----------

## Binestar

PLEASE IGNORE THIS POST -- THIS IS A REALLY BAD METHOD TO DO WHAT YOU ASKED.  PLEASE READ THE NEXT POST FOR A BETTER METHOD

This is a very convoluted method of getting what you want to work to work, but it works.

You need the mail program:

```

emerge mailx

```

Then you need to create a new user who will e-mail you each time you receive an e-mail.

in this example I will use "notify" for a user:

```

adduser notify

```

You need to then create a home directory for notify:

```

mkdir /home/notify

chown notify.users /home/notify

chmod 755 /home/notify

```

Now you need to add a procmailrc file and a perl script to notify's home directory:

the file /home/notify/.procmailrc should have 0644 permissions and it should read:

```

LOGFILE=/home/notify/procmail.log

MAILDIR=/home/notify/mail

FORMAIL=/usr/bin/formail

:0 fhw

| $FORMAIL -I "From " -a "From "

:0: fhw

| $FORMAIL -rtzxTo: | /home/notify/notify.pl

```

and the file /home/notify/notify.pl should have 0755 permissions and it should read:

```

#!/usr/bin/perl

        $notify = <STDIN>;

        system("/bin/mail -s \"Email from $notify\" yourphonenumber\@gin.nl");

```

next you need to edit your /etc/mail/aliases file to include:

```

notifyme:   yourusername, notify

```

then you need to run the newaliases command:

```

newaliases

```

Then change your .fetchmailrc to deliver to "notifyme" instead of "yourusername" and sendmail will then deliver all messages that fetchmail sends to "notifyme" to "userusername" and "notify".

```

poll mail.isp1.net with proto POP3

       user "johndoe" there with password "password1" is notifyme here options fetchall warnings 3600

```

All notify does is strips the From: Header out and sends it to your phone.  The real e-mail goes to your regular username.

I know that is confusing, so let me know if you understand what I was explaining.

Thanks,

BinestarLast edited by Binestar on Tue Dec 03, 2002 1:57 pm; edited 1 time in total

----------

## Binestar

I did a little research last night and realized that you can do all this with a simple procmail recipe as your own user that calls a perl script.

No need to follow the directions above, but I'm not sure if I can delete it or edit it, plus it might give someone an idea on things... so I'll leave it.

This post has a much better method.

first you do still need mailx

```

emerge mailx

```

You need to add a simple recipe to your *OWN* .procmailrc file:

```

:0 c

| $FORMAIL -rtzxTo: | /home/username/notify.pl

```

and your notify.pl file should have permissions of 0755 and have the lines:

```

#!/usr/bin/perl

        $notify = <STDIN>;

        system("/bin/mail -s \"Email from $notify\" yourphonenumber\@phonedomain.com");

```

Much easier than going through the process of adding new users and changing delivery.

the ":0 c" portion of the procmail recipe tells procmail to make a carbon copy of the e-mail and process it with the recipe, then to pass the original on to the next recipe.  I just didn't think of looking at the man page yesterday when I was helping you. =)

Hope this helps more,

Binestar

----------

## jecepede

Maybe a silly question but ehhrr ahum ahum what is  mailx ?

And I used sendmail in combination with fetchmail ?

And where should I type :

:0 c

| $FORMAIL -rtzxTo: | /home/username/notify.pl 

And... I don't want a cc to my phone, just a new one-liner mail to my phone. Did you ever send a 80Kb gif file to a phone ? that is about 69 sms !!!!

Greets 

Jessy

----------

## Binestar

mailx is the package that includes the program 'mail' which is a commandline e-mailler.

That is used by the perl script I gave you which is called by procmail.

For the exact places to put the information:

You need to create a file in your home directory called ".procmailrc"

That file should have the following:

```

LOGFILE=/home/username/procmail.log

MAILDIR=/home/username/mail

FORMAIL=/usr/bin/formail 

:0 c

| $FORMAIL -rtzxTo: | /home/username/notify.pl 

```

Then you also need to create a file in your home directory called "notify.pl"

That file should have the following lines:

```

#!/usr/bin/perl

        $notify = <STDIN>;

        system("/bin/mail -s \"Email from $notify\" yourphonenumber\@phonedomain.com");

```

That perl script just sends an e-mail to your phone with a subject of: "E-mail from whoever@thierisp.com"

It doesn't forward the whole message, it just gets the from address from the e-mail and forwards it to your phone.

Hope that helps,

Binestar

----------

## jecepede

Okidokie...

I made the two files, how can I start this now ? Or is the fact the I type "emerge mailx" enough ?

Should I not use a line like "rc-update add mailx default" or so ??

Greets

Jessy

----------

## Binestar

If you installed sendmail and procmail as above, you'll be all set.  Mailx is *NOT* a service.  It is just a commandline mail CLIENT.  It still uses sendmail as the MTA.

So as long as those files are created, you should be all set.  I would test it with a message to make sure you don't lose any mail, then set it up and see if it works to your liking.

Binestar

----------

## jecepede

Binestar, I am afraid I lost you completely now ?

Procmail and sendmail ? I have fetchmail and sendmail ? How can I run AND procmail AND sendmail ? They both use port 25 ??? I think it will not work like you think it will....

Or do you mean I have to replace my sendmail with procmail ????

Greets

Jessy

----------

## Binestar

OK, this has gotten completely on a tangent of the original Tips & Tricks I posted, but here goes.

procmail

mailx

sendmail

All different programs that serve different functions.

Please read the man pages for procmail, mail, and sendmail to see how they have different functions:

Basically:

procmail is an autonomous mail processor.  Whats this mean?  It means it filters and files mail according to recipe's.  (One of which I had you put into your .procmailrc file in your home directory)

mailx is a package of programs that includes the mail program.  mail is a program that can be used as a scripted e-mail client (Which is what I have done in the above examples for you)

sendmail is an MTA (Mail Transport Agent)  That is the program that listen in daemon mode on port 25.

All 3 of these programs serve different functions, just as fetchmail is used to pull the e-mail from the server to your local machine.

Having procmail and sendmail in no way overlaps thier functionality, in fact, they are *VERY* complimentory to each other.  Procmail can't send and receive e-mail across the internet like sendmail does, but it does have some very nice mail sorting abilities, whereas sendmail on the otherhand just dumps everything from a single user into a single mailbox.  Procmail would then read the mailbox and sort/filter it based on it's recipe's.  (Which at the moment for you they are very basic -- just enough to send an e-mail to your phone saying that it has received a new message.)

I've tried to be as basic as possible, but in doing so I think I've kept you from reading the instructions and therefore the purposes for each of these items... so i say again,  Please read the man pages for the following:

mail

procmail

sendmail

fetchmail

perl

Thank you,

Binestar

----------

## ebrostig

I personally use fetchmail to retrieve all my emails from out imap server, then delete the mail from the imap server and then deliver it with sendmail to my local user.

Since I use Kmail, configuring filtering is easy and I have also included the use of spamassassin to move all junk to a trash can where I can briefly verify that it has correct status before beeing deleted.

Why am I doing this?

Well, by using fetchmail, I never run out of space on the central email server. I can also filter all incoming email and move them to their correct location (mailinglists gets sorted correctly). This is something you can not do on an imap server.

Another good point about fetchmail is that you can consolidate several external mail accounts into one local (very nice if you use hotmail with several usernames)

Both fetchmail and sendmail seems to be complicated to configure, but a normal user only needs a few of the options available.

I can also recommend spamassassin, it has really made my email managable again  :Smile: 

Erik

----------

## jecepede

 :Crying or Very sad:   I now really lost you binestar ?

A simple mail notification, how difficult can it be ????????????

----------

## Binestar

first you need to make sure you install sendmail and fetchmail as in my first post.  Once sendmail, fetchmail, and procmail are working as in my first post you can then go onto installing the notification.

The notification install goes like this:

```

emerge mailx

```

Now create a file in your home directory called "notify.pl"

In that notify.pl file you should put:

```

#!/usr/bin/perl

        $notify = <STDIN>;

        system("/bin/mail -s \"Email from $notify\" yourphonenumber\@phonedomain.com");

```

Once the file is created you need to change it to executable:

```

chmod 755 notify.pl

```

Next, create a file in your home directory called:  ".procmailrc"

In the .procmailrc file you will enter the following lines.

```

LOGFILE=/home/notify/procmail.log

MAILDIR=/home/notify/mail

FORMAIL=/usr/bin/formail

:0 c

| $FORMAIL -rtzxTo: | /home/notify/notify.pl

:0

/var/spool/mail/username 

```

After that, you are done.  And should be able to send a test message and have it appear in your mailbox, with a notification that you have received a message going to your phone.

It's not that difficult, the instructions are exactly as listed.

BinestarLast edited by Binestar on Fri Dec 13, 2002 1:36 pm; edited 1 time in total

----------

## DArtagnan

I'd like to ask some about all these email/network/handy/dandy  :Smile: 

Soon. my ISP announced us that they will block the SMTP forward (??? not exactly understand them, can't connect to the SMTP server from outside like ssmtp does???) so is it possible to send/get emails from my gentoo without beeing dependant by my ISP?   :Embarassed: 

Thanks in advance

----------

## Binestar

If you follow this guide, Sendmail already forwards all outgoing mail through your ISP's server, and all incoming mail is delivered locally from your ISP's server via fetchmail.

The outgoing mail and incoming mail of course is dependant on your ISP in this instance, but if you wanted to have your own domain hosted on your box you will probably have to get a mail server that is outside your ISP.

There is really not much you can do to get around that without an outside mail server.

You can set that outside mail server to listen on a port other than 25 and use that for sending and retrieving mail (i.e. 26)

If you just want to have a sendmail server on your local machine and don't mind forwarding everything through your ISP then this setup will work fine.

If you don't want the mail to ever touch the ISP's server you'll have to work around thier filters (Which is probably against the AUP.)

Binestar

----------

## DArtagnan

 *Binestar wrote:*   

> If you follow this guide, Sendmail already forwards all outgoing mail through your ISP's server, and all incoming mail is delivered locally from your ISP's server via fetchmail.
> 
> The outgoing mail and incoming mail of course is dependant on your ISP in this instance, but if you wanted to have your own domain hosted on your box you will probably have to get a mail server that is outside your ISP.
> 
> There is really not much you can do to get around that without an outside mail server.
> ...

 

Thank you

----------

## jecepede

Okie, Im gonna try sir... (or is it ma'am)

Im gonna emerge mailx, then procmail and test...

See you in a while....

 *Binestar wrote:*   

> first you need to make sure you install sendmail and fetchmail as in my first post.  Once sendmail, fetchmail, and procmail are working as in my first post you can then go onto installing the notification.
> 
> The notification install goes like this:
> 
> ```
> ...

 

Jessy

----------

## jecepede

Allllllrighty Binestar !!!

Itcha worinking : -)))))))))))))))))))))) I get a oneliner mail on my phone saing :

 *Quote:*   

>  Email from however@wherever.com

 

only one sad thing  :Crying or Very sad: 

I can;t read my mail via mutt anymore, it suddeny delivers the mail in douzends of small files in /home/jecepede/.mail/new instead of /var/spool/mail/jecepede ???

I can read the mail amually by cat-ting the little file, but mutt says that there si no mail ?

Also, it doest forward anything anymore ???

I have the little file  *Quote:*   

> .forward

  in my homedir but it seems to ignore it ?????

Greets Jessy...

----------

## Binestar

To fix that you just need to change your .procmailrc file to:

```

LOGFILE=/home/notify/procmail.log

MAILDIR=/home/notify/mail

FORMAIL=/usr/bin/formail

:0 c

| $FORMAIL -rtzxTo: | /home/notify/notify.pl 

:0

/var/spool/mail/username

```

Of course put your username where it says username, and it should work.  Let me know how it tests out.

Binestar

(Christopher Fisk)

----------

## jecepede

Aloha Binestar !

I just wanted to type : I already tried that but it doesnt work ???

But then I saw I typed /var/spool/mial   :Embarassed: 

Hihihihi thank you anyway....

Jessy

----------

## jecepede

 *Quote:*   

> 
> 
> cat .procmailrc
> 
> LOGFILE=/var/log/procmail.log
> ...

 

Hi Binestar

I use this script now quite sucsesfully but :

When I now send mail to for example testuser@mydomain.nl the sms-mail that is being send is "made" by testuser@mydomain.nl ? So if somone sees that adres they could send to that and ehhr I don't want....

Can I change that into justauser@mydomain.nl ? coz if I send to justauser@mydomain.nl it will  be not deliverd....

So in short :

1 I send to myuser@mydomain.nl

2 the mail will be forwarded to myuser@myisp.nl

3 the sms-notification will be sent to myphone@mysmsgateway.nl in the name of myuser@mydomain.nl

so can I change the myuser@mydomain.nl from step 3 into another e-mail adress ????

Many Greets :

Jessy

----------

## eyevee99

i've just done a fresh 1.4 install.

I'm setting up fetchmail etc as described in this thread.

When I try to emerge sendmail there is a conflict with net-mail/ssmtp

```

[ebiuld    N   ] net-dns/hesiod-3.0.2

[blocks   B   ] net-mail/ssmtp ("virtual/mta" from pkg net-mail/sendmail-8.12.6-r1

[ebiuld    N   ] net-mail/sendmail-8.12.6-r1

```

Any idea what this means and how to fix it?

----------

## eyevee99

This may seem odd, but I have no telnet command?

EDIT:  found and emerged netkit-telnetd.

telnet does not get past the following on the localhost:

```

telnet localhost smtp 

Trying 127.0.0.1... 

Connected to localhost. 

Escape character is '^]'. 

220 eyevee99.home.box ESMTP Sendmail 8.12.6/8.12.6; Sat, 04 Dec 2003 09:44:56 +1000 

```

Any ideas?

----------

## Binestar

You have telnet installed, and it shows that sendmail is running.  if you read the text I put you would type in the next line (helo yourdomain.com)

As for the SSMTP, I believe that's just another SMTP server and as such conflicts with sendmail.  it _should_ be safe to remove it.

I would just do some research to make sure.

Binestar

----------

## eyevee99

ok.  I didn't realise there was more than one command to type int he telnet session.  I thought that was all output.

;)

so this setup seems to drag the mail down into ~/.maildir.

Presumably I now set up procmail to filter .maildir and pu things where I want them.

Should I be able to then use pine to view this mail?  and Evolution?

Should I be able to send mail from the console?

I'm trying to setup the system so I can use X but if it dies I'm still fully functional with pine in the console.

----------

## eyevee99

I have a another query or ten.

My goal is to have mail setup so that I can be using pine at the console or evolution in gnome.

So far, I have a basic setup for sendmail, procmail and fetchmail (per the guide at the start of this thread).

fetchmail gets mail to the ~/.maildir spoolfile

sendmail sends masquerading as my domain blah.com (real domain name withheld)

This sends as myuser@blah.com (my linux logon and my real domain hosted externally).  Which is an invalid email address.

Now the questions:

- Can I set up sendmail to send from my real mail address?

- Can I set up pine to send from my real email address?

- Can I set up fetchmail (using procmail?) to file mail according to the email address it is sent to?

- Can I set up pine to read multiple mail accounts (I have several I need to be able to check)

- Can I set up pine to be able to send FROM any of these accounts (similar to the way you can in evolution where you select the from address)?

- Can I set up evolution to use the mailspool or mail directory created by the above operations (ie so if I'm in pine or evolution I'm looking at the same mail data)

- Can I set up evolution to send via sendmail (using multiple addresses when needed)?

I know that's a a lot of questions... Perhaps some pointers in the right direction?  I've read though not fully comprehended the procmail, sendmail and fetchmail mans.

Cheers,

Ryan

----------

## Binestar

 *Quote:*   

> - Can I set up sendmail to send from my real mail address?

 

You should be able to set the Masqurade_as sendmail.mc entry.

 *Quote:*   

> - Can I set up pine to send from my real email address?

 

Yes, this is actually what I do now.  Just enter your address into the Pine information

 *Quote:*   

> - Can I set up fetchmail (using procmail?) to file mail according to the email address it is sent to?

 

I believe what you are saying is you have a catchall account (*@blah.com goes to a single pop account) and you want to file it based on the username in the To: header.  It should be possible -- except there is no way of knowing the evelope header if you join mailing lists...  You'll want to do a bit more research on advanced fetchmail configurations.

 *Quote:*   

> - Can I set up pine to read multiple mail accounts (I have several I need to be able to check)

 

I honestly don't know.  You can always run pine from multiple user accounts...

 *Quote:*   

> - Can I set up pine to be able to send FROM any of these accounts (similar to the way you can in evolution where you select the from address)?

 

You can set the From Header to be an extra header available to edit and do it manually.  check out the .pinerc and manpage for pine on adding headers.

 *Quote:*   

> - Can I set up evolution to use the mailspool or mail directory created by the above operations (ie so if I'm in pine or evolution I'm looking at the same mail data)
> 
> - Can I set up evolution to send via sendmail (using multiple addresses when needed)? 

 

Never used evolution... so I'm not sure.

 *Quote:*   

> Should I be able to send mail from the console? 

 

Yes

Hope that helps,

Binestar

----------

## eyevee99

I can't seem to get sendmail to answer the telnet command.

I've setup sendmail.mc and used m4 to convert it.  I've started sendmail and it seems to have started fine.  Yet when I telnet (had to emerge netkit-telnetd) the connection is always refused.

Any ideas?

Thanks.

```

divert(-1)

#

# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.

#       All rights reserved.

# Copyright (c) 1983 Eric P. Allman.  All rights reserved.

# Copyright (c) 1988, 1993

#       The Regents of the University of California.  All rights reserved.

#

# By using this file, you agree to the terms and conditions set

# forth in the LICENSE file which can be found at the top level of

# the sendmail distribution.

#

#

                                                                                                                                                                                                                                  

#

#  This is a generic configuration file for Linux.

#  It has support for local and SMTP mail only.  If you want to

#  customize it, copy it to a name appropriate for your environment

#  and do the modifications there.

#

                                                                                                                                                                                                                                  

divert(0)dnl

include(`/usr/share/sendmail-cf/m4/cf.m4')dnl

define(`confDEF_USER_ID',``8:12'')dnl

VERSIONID(`$Id: sendmail-procmail.mc,v 1.1 2003/04/24 21:18:58 avenj Exp $')dnl

OSTYPE(linux)dnl

DOMAIN(generic)dnl

define(`SMART_HOST',`mail.myISP.com.au')dnl

MASQUERADE_AS(mydomain.com)dnl

FEATURE(`allmasquerade')dnl

FEATURE(`masquerade_envelope')dnl

define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl

FEATURE(`smrsh',`/usr/sbin/smrsh')dnl

FEATURE(`local_lmtp',`/usr/sbin/mail.local')dnl

FEATURE(`local_procmail')dnl

define(`PROCMAIL_MAILER_FLAGS',`procmail -Y -m $h $g $u')dnl

define(`PROCMAIL_MAILER_ARGS',`procmail -Y -m $h $g $u')dnl

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

MAILER(procmail)dnl

MAILER(local)dnl

MAILER(smtp)dnl

Cwlocalhost.localdomain (should this be a real local domain, such as eyevee99.home.box?)

```

----------

## eyevee99

I also can't stop sendmail

```

root@eyevee99 ryan # /etc/init.d/sendmail stop

 * Stopping sendmail...

sendmail: no process killed                                               [ !! ]

```

----------

## Braempje

I'm having a problem on with fetchmail: when I try to bounce a mail in KMail, it tries to declare braempje@localhost as an invalid address, instead of braempje@myisp.  

(I have fetchmail delivering messages to maildir, and courier serves them to a lot of clients, and on these machines I have the problem with bouncing.)

Do you guys know a solution?

----------

## Binestar

Wow, there really needs to be something so I can watch a thread for new posts.  Maybe and e-mail when new posts occur.

That said:

eyevee99:  With that configuration sendmail is only listening on the lo device (IP Address 127.0.0.1)

You need to make sure that sendmail is started.

ps auwx | grep sendmail

If it's not starting you'll need to figure out why.  Let me know if you need help with that.  (Usually you would want to turn on logging by adding -O LogLevel=30 to the /etc/conf.d/sendmail file.

Braempje:  I'm not sure that that is a fetchmail problem.  Sounds more like KMail is not properly bouncing the message.

Binestar

----------

## gatiba

When i :

```
telnet localhost smtp
```

It says :

```
Trying 127.0.0.1...

telnet: Unable to connect to remote host: Connection refused

```

So as Eyevee i can't start sendmail correctly. When i try to stop it i receive the same eyevee's message, and in /var/log there aren't loggin file for sendmail.

----------

## eyevee99

Check that ssmtp (the cut down version of sendmail) isn't installed.

I found that even though I couldn't install sendmail until I removed ssmtp (which must be install by default?), installing sendmail seemed to reinstall ssmtp.  This obviously then broke sendmail.  I uninstalled ssmtp again and viola!

:)

Works like a bought one.

Binestar, I think you can set a thread to be monitored and it will then send you emails when there is a new post.

----------

## spinez

Binestar,

I've followed your guide in this thread and recommened to multiple people.  Thanks!  It's awesome.  

I was wondering if you could help me with something though.  I want to send an entire copy of an email to a different email address.  Is this easy to do with the setup you have listed?  

Thanks for any info you can provide.

----------

## Binestar

 *Quote:*   

> I was wondering if you could help me with something though. I want to send an entire copy of an email to a different email address. Is this easy to do with the setup you have listed? 

 

Certainly is possible.  With procmail you should be able to pipe the message to mail.

Example rule would be:

:0 c

| mail username@domain.com

I havn't tested that, but it should be something similar.  Now that I think about it, there might even be a built in mechanism for this in procmail.

As an aside, I rarely check this thread anymore,  If anyone needs help with thier question, please post it here, but also e-mail me directly at chrisf@mhonline.net and I'll answer you much quicker than a month and a half later =)

Binestar

----------

## lupo

I want to access my smtp server via telnet. it is a sendmail server. My isp does not know what the authentification command is. 

how do I authentificate myself via telnet? when i type AUTH and the username it gives the error message AUTH mechanism not available

----------

## matbintang

For years now I've been using this script to set up my mail server. I know that it's not the best way to learn things nor is it the best way to do this. However, don't think that the folks at Cork LUG have any bad intentions. 

It'll set up sendmail as for use with an isp or as a stand alone mail server. Give it a try.

The URL is http://cork.linux.ie/filemgmt/index.php

----------

## Binestar

lupo:  You should be able to type:  AUTH LOGIN.

It really would be better if you read up on the SMTP protocol and SMTP auth inparticular to learn how to talk directly to an SMTP server.  The password needs to be hashed, or even encrypted based on the settings you are using for the server.

Binestar

----------

## matbintang

I'm having a heck of a time getting sendmail to work on my gentoo box.

Here's a list of the problems I having.

1. sendmail is reporting that it can't access the /var/spool/clientmqueue directory here is the permission set right now (out of the box).What should this be?

 *Quote:*   

> drwxrwx---    2 smmsp    smmsp          72 Oct 19 14:00 clientmqueue 

 

2. sending the command /etc/init.d/sendmail stop or zap doesn't kill sendmail. How do I fix the init script to do this?

----------

## neal_cz

matbintang,

does sendmail run as user /group smmsp?

I have it like this:

 *Quote:*   

> drwxrwx---    2 root     mail         4096 2003-11-06 00:00 clientmqueue

 

and sendmail runs as user mail (which belongs to group mail):

 *Quote:*   

> root@server mail # ps aux | grep sendmail
> 
> mail      5923  0.0  0.1  4456  872 ?        S    Sep29   0:01 [sendmail]

 

----------

## matbintang

I couldn't figure out what was wrong. I figured I must have messed up something cause I installed postfix first and removed it. I'm wondering if something in the group/passwd files got changed or something like that. 

I reinstalled everything this time only installed sendmail and everything worked fine out of the box.

Thanks for the help though.

----------

## aiel7

 *eyevee99 wrote:*   

> 
> 
> <snip>
> 
> When I try to emerge sendmail there is a conflict with net-mail/ssmtp
> ...

 

if you run 'emerge unmerge ssmtp' it will remove the package that is causing the confilct and you should be able to emerge sendmail without any problems.

----------

## blommethomas

if you use multiple ISP: should you change the sendmail configuration file to notice the other isp in it to?

and if yes, what lines should I add, just copy the lnies with ISP but with different ISP?

If I'm right: you can configurr your normal mail client afterwards(mine is evolution) and it will automatically go through the sendmail you have

----------

## Narusegawa

I'd like to use sendmail to send all outgoing mail via my mail server (mail.domain.co.uk), but on port 587 not 25 (my ISP blocks outgoing port 25). Unless the mail is for a local user (i.e. root). I'm not bothered about incoming mails at all.

What file setup would I need for this? Thanks in advance

P.S. Gentoo guys are the best!  :Very Happy:  Always helpful to us newbies

----------

## JeroenK

I have 2 domains, and 2 users. I want a different domain to be appended to each user:

user1@example.com

someoneelse@otherdomain.com

I tried different possibilities, first was to add a:

export EMAIL=user1@example.com

In mutt it shows up ok, but when I send it, it seems like sendmail turns it into:

user1@myhost.example.com

I also noticed this option in sendmail.cf:

# my official domain name

# ... define this only if sendmail cannot automatically determine your domain

#Dj$w.Foo.COM

but in my case this depends on the active user

Any help will be greatly appreciated!

Jeroen

----------

## blommethomas

is it jusdt me or is sendmail getting old and un-updated?

If I wan't to send logs to my mailserver(gmail) are there others ways too?

----------

## ]Trix[

I have setup sendmail and whenever i send mail to my gmail account From domain is resalehost.networksolutions.com how can i change that so that domain will be s0omething else?

----------

## Dominique_71

Thank you for the guide. I followed the sendmail part and I can send mails from darcs now.

I have 2 simple questions. My email client is claws-mail. I use it with spamassasin and clamav. What are the pros and cons to use fetchmail before reading the mails with claws-mail?

I never used fetchmail. If I want to use it and as it is configured to fetch the mails from my provider and to erase them on its server, what must I do before running fetchmail to be sure at I will get the mails in claws-mail and at they will not disappear?

----------

## Majed17

i have tried your configuration and it doesn't work for sendmail.

here is my sendmail.mc configuration:

```

divert(-1)

divert(0)dnl

include(`/usr/share/sendmail-cf/m4/cf.m4')dnl

VERSIONID(`$Id: sendmail.mc,v 1.2 2004/12/07 01:59:31 g2boojum Exp $')dnl

OSTYPE(linux)dnl

DOMAIN(generic)dnl

FEATURE(`smrsh',`/usr/sbin/smrsh')dnl

FEATURE(`local_lmtp',`/usr/sbin/mail.local')dnl

MAILER(local)dnl

MAILER(smtp)dnl
```

it was according to your suggestion:

```

#divert(-1)

#divert(0)dnl

#include(`/usr/share/sendmail-cf/m4/cf.m4')dnl

#VERSIONID(`$Id: sendmail-procmail.mc,v 1.2 2004/12/07 01:59:31 g2boojum Exp $')dnl

#OSTYPE(linux)dnl

#DOMAIN(generic)dnl

#FEATURE(`smrsh',`/usr/sbin/smrsh')dnl

#FEATURE(`local_lmtp',`/usr/sbin/mail.local')dnl

#FEATURE(`local_procmail')dnl

#MAILER(local)dnl

#MAILER(smtp)dnl

#MAILER(procmail)dnl

divert(-1)

#

# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.

#       All rights reserved.

# Copyright (c) 1983 Eric P. Allman.  All rights reserved.

# Copyright (c) 1988, 1993

#       The Regents of the University of California.  All rights reserved.

#

# By using this file, you agree to the terms and conditions set

# forth in the LICENSE file which can be found at the top level of

# the sendmail distribution.

#

#

divert(0)dnl

include(`/usr/share/sendmail-cf/m4/cf.m4')dnl

define(`confDEF_USER_ID',``8:12'')dnl

VERSIONID(`$Id: sendmail.mc,v 1.2 2002/07/04 04:55:29 g2boojum Exp $')dnl

OSTYPE(linux)dnl

DOMAIN(generic)dnl

define(`SMART_HOST',`mail.bellakt.com')dnl

MASQUERADE_AS(bellakt.com)dnl

FEATURE(`allmasquerade')dnl

FEATURE(`masquerade_envelope')dnl

define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl

FEATURE(`smrsh',`/usr/sbin/smrsh')dnl

FEATURE(`local_lmtp',`/usr/sbin/mail.local')dnl

FEATURE(`local_procmail')dnl

define(`PROCMAIL_MAILER_FLAGS',`procmail -Y -m $h $g $u')dnl

define(`PROCMAIL_MAILER_ARGS',`procmail -Y -m $h $g $u')dnl

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

MAILER(procmail)dnl

MAILER(local)dnl

MAILER(smtp)dnl

Cwlocalhost.localdomain 
```

working configuration of sendmail.cf

```
#

# Copyright (c) 1998-2004, 2009 Sendmail, Inc. and its suppliers.

#   All rights reserved.

# Copyright (c) 1983, 1995 Eric P. Allman.  All rights reserved.

# Copyright (c) 1988, 1993

#   The Regents of the University of California.  All rights reserved.

#

# By using this file, you agree to the terms and conditions set

# forth in the LICENSE file which can be found at the top level of

# the sendmail distribution.

#

#

######################################################################

######################################################################

#####

#####      SENDMAIL CONFIGURATION FILE

#####

##### built by root@srvmon on рОД жЕЧ 15 16:28:46 EET 2010

##### in /var/tmp/portage/mail-mta/sendmail-8.14.4/work/sendmail-8.14.4

##### using /var/tmp/portage/mail-mta/sendmail-8.14.4/image//usr/share/sendmail-cf/ as configuration include directory

#####

######################################################################

#####

#####   DO NOT EDIT THIS FILE!  Only edit the source .mc file.

#####

######################################################################

######################################################################

#####  $Id: cfhead.m4,v 8.120 2009/01/23 22:39:21 ca Exp $  #####

#####  $Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $  #####

#####  $Id: sendmail.mc,v 1.2 2004/12/07 01:59:31 g2boojum Exp $  #####

#####  $Id: linux.m4,v 8.13 2000/09/17 17:30:00 gshapiro Exp $  #####

#####  $Id: local_procmail.m4,v 8.22 2002/11/17 04:24:19 ca Exp $  #####

#####  $Id: generic.m4,v 8.15 1999/04/04 00:51:09 ca Exp $  #####

#####  $Id: redirect.m4,v 8.15 1999/08/06 01:47:36 gshapiro Exp $  #####

#####  $Id: use_cw_file.m4,v 8.11 2001/08/26 20:58:57 gshapiro Exp $  #####

#####  $Id: smrsh.m4,v 8.14 1999/11/18 05:06:23 ca Exp $  #####

#####  $Id: local_lmtp.m4,v 8.17 2002/11/17 04:41:04 ca Exp $  #####

#####  $Id: proto.m4,v 8.741 2009/12/11 00:04:53 ca Exp $  #####

# level 10 config file format

V10/Berkeley

# override file safeties - setting this option compromises system security,

# addressing the actual file configuration problem is preferred

# need to set this before any file actions are encountered in the cf file

#O DontBlameSendmail=safe

# default LDAP map specification

# need to set this now before any LDAP maps are defined

#O LDAPDefaultSpec=-h localhost

##################

#   local info   #

##################

# my LDAP cluster

# need to set this before any LDAP lookups are done (including classes)

#D{sendmailMTACluster}$m

Cwlocalhost

# file containing names of hosts for which we receive email

Fw/etc/mail/local-host-names

# my official domain name

# ... define this only if sendmail cannot automatically determine your domain

#Dj$w.Foo.COM

# host/domain names ending with a token in class P are canonical

CP.

# "Smart" relay host (may be null)

DS

# operators that cannot be in local usernames (i.e., network indicators)

CO @ % !

# a class with just dot (for identifying canonical names)

C..

# a class with just a left bracket (for identifying domain literals)

C[[

# Resolve map (to check if a host exists in check_mail)

Kresolve host -a<OKR> -T<TEMP>

C{ResOk}OKR

# Hosts for which relaying is permitted ($=R)

FR-o /etc/mail/relay-domains

# arithmetic map

Karith arith

# dequoting map

Kdequote dequote

# class E: names that should be exposed as from this host, even if we masquerade

# class L: names that should be delivered locally, even if we have a relay

# class M: domains that should be converted to $M

# class N: domains that should not be converted to $M

#CL root

C{E}root

# my name for error messages

DnMAILER-DAEMON

CPREDIRECT

# Configuration version number

DZ8.14.4

###############

#   Options   #

###############

# strip message body to 7 bits on input?

O SevenBitInput=False

# 8-bit data handling

#O EightBitMode=pass8

# wait for alias file rebuild (default units: minutes)

O AliasWait=10

# location of alias file

O AliasFile=/etc/mail/aliases

# minimum number of free blocks on filesystem

O MinFreeBlocks=100

# maximum message size

#O MaxMessageSize=0

# substitution for space (blank) characters

O BlankSub=.

# avoid connecting to "expensive" mailers on initial submission?

O HoldExpensive=False

# checkpoint queue runs after every N successful deliveries

#O CheckpointInterval=10

# default delivery mode

O DeliveryMode=background

# error message header/file

#O ErrorHeader=/etc/mail/error-header

# error mode

#O ErrorMode=print

# save Unix-style "From_" lines at top of header?

#O SaveFromLine=False

# queue file mode (qf files)

#O QueueFileMode=0600

# temporary file mode

O TempFileMode=0600

# match recipients against GECOS field?

#O MatchGECOS=False

# maximum hop count

#O MaxHopCount=25

# location of help file

O HelpFile=/etc/mail/helpfile

# ignore dots as terminators in incoming messages?

#O IgnoreDots=False

# name resolver options

#O ResolverOptions=+AAONLY

# deliver MIME-encapsulated error messages?

O SendMimeErrors=True

# Forward file search path

O ForwardPath=$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward

# open connection cache size

O ConnectionCacheSize=2

# open connection cache timeout

O ConnectionCacheTimeout=5m

# persistent host status directory

#O HostStatusDirectory=.hoststat

# single thread deliveries (requires HostStatusDirectory)?

#O SingleThreadDelivery=False

# use Errors-To: header?

O UseErrorsTo=False

# log level

O LogLevel=9

# send to me too, even in an alias expansion?

#O MeToo=True

# verify RHS in newaliases?

O CheckAliases=False

# default messages to old style headers if no special punctuation?

O OldStyleHeaders=True

# SMTP daemon options

O DaemonPortOptions=Name=MTA

O DaemonPortOptions=Port=587, Name=MSA, M=E

# SMTP client options

#O ClientPortOptions=Family=inet, Address=0.0.0.0

# Modifiers to define {daemon_flags} for direct submissions

#O DirectSubmissionModifiers

# Use as mail submission program? See sendmail/SECURITY

#O UseMSP

# privacy flags

O PrivacyOptions=authwarnings

# who (if anyone) should get extra copies of error messages

#O PostmasterCopy=Postmaster

# slope of queue-only function

#O QueueFactor=600000

# limit on number of concurrent queue runners

#O MaxQueueChildren

# maximum number of queue-runners per queue-grouping with multiple queues

#O MaxRunnersPerQueue=1

# priority of queue runners (nice(3))

#O NiceQueueRun

# shall we sort the queue by hostname first?

#O QueueSortOrder=priority

# minimum time in queue before retry

#O MinQueueAge=30m

# how many jobs can you process in the queue?

#O MaxQueueRunSize=0

# perform initial split of envelope without checking MX records

#O FastSplit=1

# queue directory

O QueueDirectory=/var/spool/mqueue

# key for shared memory; 0 to turn off, -1 to auto-select

#O SharedMemoryKey=0

# file to store auto-selected key for shared memory (SharedMemoryKey = -1)

#O SharedMemoryKeyFile

# timeouts (many of these)

#O Timeout.initial=5m

#O Timeout.connect=5m

#O Timeout.aconnect=0s

#O Timeout.iconnect=5m

#O Timeout.helo=5m

#O Timeout.mail=10m

#O Timeout.rcpt=1h

#O Timeout.datainit=5m

#O Timeout.datablock=1h

#O Timeout.datafinal=1h

#O Timeout.rset=5m

#O Timeout.quit=2m

#O Timeout.misc=2m

#O Timeout.command=1h

#O Timeout.ident=5s

#O Timeout.fileopen=60s

#O Timeout.control=2m

O Timeout.queuereturn=5d

#O Timeout.queuereturn.normal=5d

#O Timeout.queuereturn.urgent=2d

#O Timeout.queuereturn.non-urgent=7d

#O Timeout.queuereturn.dsn=5d

O Timeout.queuewarn=4h

#O Timeout.queuewarn.normal=4h

#O Timeout.queuewarn.urgent=1h

#O Timeout.queuewarn.non-urgent=12h

#O Timeout.queuewarn.dsn=4h

#O Timeout.hoststatus=30m

#O Timeout.resolver.retrans=5s

#O Timeout.resolver.retrans.first=5s

#O Timeout.resolver.retrans.normal=5s

#O Timeout.resolver.retry=4

#O Timeout.resolver.retry.first=4

#O Timeout.resolver.retry.normal=4

#O Timeout.lhlo=2m

#O Timeout.auth=10m

#O Timeout.starttls=1h

# time for DeliverBy; extension disabled if less than 0

#O DeliverByMin=0

# should we not prune routes in route-addr syntax addresses?

#O DontPruneRoutes=False

# queue up everything before forking?

O SuperSafe=True

# status file

#O StatusFile

# time zone handling:

#  if undefined, use system default

#  if defined but null, use TZ envariable passed in

#  if defined and non-null, use that info

#O TimeZoneSpec=

# default UID (can be username or userid:groupid)

#O DefaultUser=mailnull

# list of locations of user database file (null means no lookup)

#O UserDatabaseSpec=/etc/mail/userdb

# fallback MX host

#O FallbackMXhost=fall.back.host.net

# fallback smart host

#O FallbackSmartHost=fall.back.host.net

# if we are the best MX host for a site, try it directly instead of config err

#O TryNullMXList=False

# load average at which we just queue messages

#O QueueLA=8

# load average at which we refuse connections

#O RefuseLA=12

# log interval when refusing connections for this long

#O RejectLogInterval=3h

# load average at which we delay connections; 0 means no limit

#O DelayLA=0

# maximum number of children we allow at one time

#O MaxDaemonChildren=0

# maximum number of new connections per second

#O ConnectionRateThrottle=0

# Width of the window 

#O ConnectionRateWindowSize=60s

# work recipient factor

#O RecipientFactor=30000

# deliver each queued job in a separate process?

#O ForkEachJob=False

# work class factor

#O ClassFactor=1800

# work time factor

#O RetryFactor=90000

# default character set

#O DefaultCharSet=unknown-8bit

# service switch file (name hardwired on Solaris, Ultrix, OSF/1, others)

#O ServiceSwitchFile=/etc/mail/service.switch

# hosts file (normally /etc/hosts)

#O HostsFile=/etc/hosts

# dialup line delay on connection failure

#O DialDelay=0s

# action to take if there are no recipients in the message

#O NoRecipientAction=none

# chrooted environment for writing to files

#O SafeFileEnvironment

# are colons OK in addresses?

#O ColonOkInAddr=True

# shall I avoid expanding CNAMEs (violates protocols)?

#O DontExpandCnames=False

# SMTP initial login message (old $e macro)

O SmtpGreetingMessage=$j Sendmail $v/$Z; $b

# UNIX initial From header format (old $l macro)

O UnixFromLine=From $g $d

# From: lines that have embedded newlines are unwrapped onto one line

#O SingleLineFromHeader=False

# Allow HELO SMTP command that does not include a host name

#O AllowBogusHELO=False

# Characters to be quoted in a full name phrase (@,;:\()[] are automatic)

#O MustQuoteChars=.

# delimiter (operator) characters (old $o macro)

O OperatorChars=.:%@!^/[]+

# shall I avoid calling initgroups(3) because of high NIS costs?

#O DontInitGroups=False

# are group-writable :include: and .forward files (un)trustworthy?

# True (the default) means they are not trustworthy.

#O UnsafeGroupWrites=True

# where do errors that occur when sending errors get sent?

#O DoubleBounceAddress=postmaster

# issue temporary errors (4xy) instead of permanent errors (5xy)?

#O SoftBounce=False

# where to save bounces if all else fails

#O DeadLetterDrop=/var/tmp/dead.letter

# what user id do we assume for the majority of the processing?

#O RunAsUser=sendmail

# maximum number of recipients per SMTP envelope

#O MaxRecipientsPerMessage=0

# limit the rate recipients per SMTP envelope are accepted

# once the threshold number of recipients have been rejected

#O BadRcptThrottle=0

# shall we get local names from our installed interfaces?

#O DontProbeInterfaces=False

# Return-Receipt-To: header implies DSN request

#O RrtImpliesDsn=False

# override connection address (for testing)

#O ConnectOnlyTo=0.0.0.0

# Trusted user for file ownership and starting the daemon

#O TrustedUser=root

# Control socket for daemon management

#O ControlSocketName=/var/spool/mqueue/.control

# Maximum MIME header length to protect MUAs

#O MaxMimeHeaderLength=0/0

# Maximum length of the sum of all headers

O MaxHeadersLength=32768

# Maximum depth of alias recursion

#O MaxAliasRecursion=10

# location of pid file

#O PidFile=/var/run/sendmail.pid

# Prefix string for the process title shown on 'ps' listings

#O ProcessTitlePrefix=prefix

# Data file (df) memory-buffer file maximum size

#O DataFileBufferSize=4096

# Transcript file (xf) memory-buffer file maximum size

#O XscriptFileBufferSize=4096

# lookup type to find information about local mailboxes

#O MailboxDatabase=pw

# override compile time flag REQUIRES_DIR_FSYNC

#O RequiresDirfsync=true

# list of authentication mechanisms

#O AuthMechanisms=EXTERNAL GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5

# Authentication realm

#O AuthRealm

# default authentication information for outgoing connections

#O DefaultAuthInfo=/etc/mail/default-auth-info

# SMTP AUTH flags

#O AuthOptions

# SMTP AUTH maximum encryption strength

#O AuthMaxBits

# SMTP STARTTLS server options

#O TLSSrvOptions

# Input mail filters

#O InputMailFilters

# CA directory

#O CACertPath

# CA file

#O CACertFile

# Server Cert

#O ServerCertFile

# Server private key

#O ServerKeyFile

# Client Cert

#O ClientCertFile

# Client private key

#O ClientKeyFile

# File containing certificate revocation lists 

#O CRLFile

# DHParameters (only required if DSA/DH is used)

#O DHParameters

# Random data source (required for systems without /dev/urandom under OpenSSL)

#O RandFile

# Maximum number of "useless" commands before slowing down

#O MaxNOOPCommands=20

# Name to use for EHLO (defaults to $j)

#O HeloName

############################

# QUEUE GROUP DEFINITIONS  #

############################

###########################

#   Message precedences   #

###########################

Pfirst-class=0

Pspecial-delivery=100

Plist=-30

Pbulk=-60

Pjunk=-100

#####################

#   Trusted users   #

#####################

# this is equivalent to setting class "t"

#Ft/etc/mail/trusted-users

Troot

Tdaemon

Tuucp

#########################

#   Format of headers   #

#########################

H?P?Return-Path: <$g>

HReceived: $?sfrom $s $.$?_($?s$|from $.$_)

   $.$?{auth_type}(authenticated$?{auth_ssf} bits=${auth_ssf}$.)

   $.by $j ($v/$Z)$?r with $r$. id $i$?{tls_version}

   (version=${tls_version} cipher=${cipher} bits=${cipher_bits} verify=${verify})$.$?u

   for $u; $|;

   $.$b

H?D?Resent-Date: $a

H?D?Date: $a

H?F?Resent-From: $?x$x <$g>$|$g$.

H?F?From: $?x$x <$g>$|$g$.

H?x?Full-Name: $x

# HPosted-Date: $a

# H?l?Received-Date: $b

H?M?Resent-Message-Id: <$t.$i@$j>

H?M?Message-Id: <$t.$i@$j>

#

######################################################################

######################################################################

#####

#####         REWRITING RULES

#####

######################################################################

######################################################################

############################################

###  Ruleset 3 -- Name Canonicalization  ###

############################################

Scanonify=3

# handle null input (translate to <@> special case)

R$@         $@ <@>

# strip group: syntax (not inside angle brackets!) and trailing semicolon

R$*         $: $1 <@>         mark addresses

R$* < $* > $* <@>   $: $1 < $2 > $3         unmark <addr>

R@ $* <@>      $: @ $1            unmark @host:...

R$* [ IPv6 : $+ ] <@>   $: $1 [ IPv6 : $2 ]      unmark IPv6 addr

R$* :: $* <@>      $: $1 :: $2         unmark node::addr

R:include: $* <@>   $: :include: $1         unmark :include:...

R$* : $* [ $* ]      $: $1 : $2 [ $3 ] <@>      remark if leading colon

R$* : $* <@>      $: $2            strip colon if marked

R$* <@>         $: $1            unmark

R$* ;            $1            strip trailing semi

R$* < $+ :; > $*   $@ $2 :; <@>         catch <list:;>

R$* < $* ; >         $1 < $2 >         bogus bracketed semi

# null input now results from list:; syntax

R$@         $@ :; <@>

# strip angle brackets -- note RFC733 heuristic to get innermost item

R$*         $: < $1 >         housekeeping <>

R$+ < $* >         < $2 >         strip excess on left

R< $* > $+         < $1 >         strip excess on right

R<>         $@ < @ >         MAIL FROM:<> case

R< $+ >         $: $1            remove housekeeping <>

# strip route address <@a,@b,@c:user@d> -> <user@d>

R@ $+ , $+      $2

R@ [ $* ] : $+      $2

R@ $+ : $+      $2

# find focus for list syntax

R $+ : $* ; @ $+   $@ $>Canonify2 $1 : $2 ; < @ $3 >   list syntax

R $+ : $* ;      $@ $1 : $2;         list syntax

# find focus for @ syntax addresses

R$+ @ $+      $: $1 < @ $2 >         focus on domain

R$+ < $+ @ $+ >      $1 $2 < @ $3 >         move gaze right

R$+ < @ $+ >      $@ $>Canonify2 $1 < @ $2 >   already canonical

# convert old-style addresses to a domain-based address

R$- ! $+      $@ $>Canonify2 $2 < @ $1 .UUCP >   resolve uucp names

R$+ . $- ! $+      $@ $>Canonify2 $3 < @ $1 . $2 >      domain uucps

R$+ ! $+      $@ $>Canonify2 $2 < @ $1 .UUCP >   uucp subdomains

# if we have % signs, take the rightmost one

R$* % $*      $1 @ $2            First make them all @s.

R$* @ $* @ $*      $1 % $2 @ $3         Undo all but the last.

R$* @ $*      $@ $>Canonify2 $1 < @ $2 >   Insert < > and finish

# else we must be a local name

R$*         $@ $>Canonify2 $1

################################################

###  Ruleset 96 -- bottom half of ruleset 3  ###

################################################

SCanonify2=96

# handle special cases for local names

R$* < @ localhost > $*      $: $1 < @ $j . > $2      no domain at all

R$* < @ localhost . $m > $*   $: $1 < @ $j . > $2      local domain

R$* < @ localhost . UUCP > $*   $: $1 < @ $j . > $2      .UUCP domain

# check for IPv4/IPv6 domain literal

R$* < @ [ $+ ] > $*      $: $1 < @@ [ $2 ] > $3      mark [addr]

R$* < @@ $=w > $*      $: $1 < @ $j . > $3      self-literal

R$* < @@ $+ > $*      $@ $1 < @ $2 > $3      canon IP addr

# if really UUCP, handle it immediately

# try UUCP traffic as a local address

R$* < @ $+ . UUCP > $*      $: $1 < @ $[ $2 $] . UUCP . > $3

R$* < @ $+ . . UUCP . > $*   $@ $1 < @ $2 . > $3

# hostnames ending in class P are always canonical

R$* < @ $* $=P > $*      $: $1 < @ $2 $3 . > $4

R$* < @ $* $~P > $*      $: $&{daemon_flags} $| $1 < @ $2 $3 > $4

R$* CC $* $| $* < @ $+.$+ > $*   $: $3 < @ $4.$5 . > $6

R$* CC $* $| $*         $: $3

# pass to name server to make hostname canonical

R$* $| $* < @ $* > $*      $: $2 < @ $[ $3 $] > $4

R$* $| $*         $: $2

# local host aliases and pseudo-domains are always canonical

R$* < @ $=w > $*      $: $1 < @ $2 . > $3

R$* < @ $=M > $*      $: $1 < @ $2 . > $3

R$* < @ $* . . > $*      $1 < @ $2 . > $3

##################################################

###  Ruleset 4 -- Final Output Post-rewriting  ###

##################################################

Sfinal=4

R$+ :; <@>      $@ $1 :            handle <list:;>

R$* <@>         $@            handle <> and list:;

# strip trailing dot off possibly canonical name

R$* < @ $+ . > $*   $1 < @ $2 > $3

# eliminate internal code

R$* < @ *LOCAL* > $*   $1 < @ $j > $2

# externalize local domain info

R$* < $+ > $*      $1 $2 $3         defocus

R@ $+ : @ $+ : $+   @ $1 , @ $2 : $3      <route-addr> canonical

R@ $*         $@ @ $1            ... and exit

# UUCP must always be presented in old form

R$+ @ $- . UUCP      $2!$1            u@h.UUCP => h!u

# delete duplicate local names

R$+ % $=w @ $=w      $1 @ $2            u%host@host => u@host

##############################################################

###   Ruleset 97 -- recanonicalize and call ruleset zero   ###

###         (used for recursive calls)         ###

##############################################################

SRecurse=97

R$*         $: $>canonify $1

R$*         $@ $>parse $1

######################################

###   Ruleset 0 -- Parse Address   ###

######################################

Sparse=0

R$*         $: $>Parse0 $1      initial parsing

R<@>         $#local $: <@>      special case error msgs

R$*         $: $>ParseLocal $1   handle local hacks

R$*         $: $>Parse1 $1      final parsing

#

#  Parse0 -- do initial syntax checking and eliminate local addresses.

#   This should either return with the (possibly modified) input

#   or return with a #error mailer.  It should not return with a

#   #mailer other than the #error mailer.

#

SParse0

R<@>         $@ <@>         special case error msgs

R$* : $* ; <@>      $#error $@ 5.1.3 $: "553 List:; syntax illegal for recipient addresses"

R@ <@ $* >      < @ $1 >      catch "@@host" bogosity

R<@ $+>         $#error $@ 5.1.3 $: "553 User address required"

R$+ <@>         $#error $@ 5.1.3 $: "553 Hostname required"

R$*         $: <> $1

R<> $* < @ [ $* ] : $+ > $*   $1 < @ [ $2 ] : $3 > $4

R<> $* < @ [ $* ] , $+ > $*   $1 < @ [ $2 ] , $3 > $4

R<> $* < @ [ $* ] $+ > $*   $#error $@ 5.1.2 $: "553 Invalid address"

R<> $* < @ [ $+ ] > $*      $1 < @ [ $2 ] > $3

R<> $* <$* : $* > $*   $#error $@ 5.1.3 $: "553 Colon illegal in host name part"

R<> $*         $1

R$* < @ . $* > $*   $#error $@ 5.1.2 $: "553 Invalid host name"

R$* < @ $* .. $* > $*   $#error $@ 5.1.2 $: "553 Invalid host name"

R$* < @ $* @ > $*   $#error $@ 5.1.2 $: "553 Invalid route address"

R$* @ $* < @ $* > $*   $#error $@ 5.1.3 $: "553 Invalid route address"

R$* , $~O $*      $#error $@ 5.1.3 $: "553 Invalid route address"

# now delete the local info -- note $=O to find characters that cause forwarding

R$* < @ > $*      $@ $>Parse0 $>canonify $1   user@ => user

R< @ $=w . > : $*   $@ $>Parse0 $>canonify $2   @here:... -> ...

R$- < @ $=w . >      $: $(dequote $1 $) < @ $2 . >   dequote "foo"@here

R< @ $+ >      $#error $@ 5.1.3 $: "553 User address required"

R$* $=O $* < @ $=w . >   $@ $>Parse0 $>canonify $1 $2 $3   ...@here -> ...

R$-          $: $(dequote $1 $) < @ *LOCAL* >   dequote "foo"

R< @ *LOCAL* >      $#error $@ 5.1.3 $: "553 User address required"

R$* $=O $* < @ *LOCAL* >

         $@ $>Parse0 $>canonify $1 $2 $3   ...@*LOCAL* -> ...

R$* < @ *LOCAL* >   $: $1

#

#  Parse1 -- the bottom half of ruleset 0.

#

SParse1

# handle numeric address spec

R$* < @ [ $+ ] > $*   $: $>ParseLocal $1 < @ [ $2 ] > $3   numeric internet spec

R$* < @ [ $+ ] > $*   $: $1 < @ [ $2 ] : $S > $3   Add smart host to path

R$* < @ [ $+ ] : > $*      $#esmtp $@ [$2] $: $1 < @ [$2] > $3   no smarthost: send

R$* < @ [ $+ ] : $- : $*> $*   $#$3 $@ $4 $: $1 < @ [$2] > $5   smarthost with mailer

R$* < @ [ $+ ] : $+ > $*   $#esmtp $@ $3 $: $1 < @ [$2] > $4   smarthost without mailer

# short circuit local delivery so forwarded email works

R$=L < @ $=w . >   $#local $: @ $1         special local names

R$+ < @ $=w . >      $#local $: $1         regular local name

# resolve remotely connected UUCP links (if any)

# resolve fake top level domains by forwarding to other hosts

# pass names that still have a host to a smarthost (if defined)

R$* < @ $* > $*      $: $>MailerToTriple < $S > $1 < @ $2 > $3   glue on smarthost name

# deal with other remote names

R$* < @$* > $*      $#esmtp $@ $2 $: $1 < @ $2 > $3   user@host.domain

# handle locally delivered names

R$=L         $#local $: @ $1      special local names

R$+         $#local $: $1         regular local names

###########################################################################

###   Ruleset 5 -- special rewriting after aliases have been expanded   ###

###########################################################################

SLocal_localaddr

Slocaladdr=5

R$+         $: $1 $| $>"Local_localaddr" $1

R$+ $| $#ok      $@ $1         no change

R$+ $| $#$*      $#$2

R$+ $| $*      $: $1

# deal with plussed users so aliases work nicely

R$+ + *         $#local $@ $&h $: $1

R$+ + $*      $#local $@ + $2 $: $1 + *

# prepend an empty "forward host" on the front

R$+         $: <> $1

R< > $+         $: < > < $1 <> $&h >      nope, restore +detail

R< > < $+ <> + $* >   $: < > < $1 + $2 >      check whether +detail

R< > < $+ <> $* >   $: < > < $1 >         else discard

R< > < $+ + $* > $*      < > < $1 > + $2 $3      find the user part

R< > < $+ > + $*   $#local $@ $2 $: @ $1      strip the extra +

R< > < $+ >      $@ $1            no +detail

R$+         $: $1 <> $&h         add +detail back in

R$+ <> + $*      $: $1 + $2         check whether +detail

R$+ <> $*      $: $1            else discard

R< local : $* > $*   $: $>MailerToTriple < local : $1 > $2   no host extension

R< error : $* > $*   $: $>MailerToTriple < error : $1 > $2   no host extension

R< $~[ : $+ > $+   $: $>MailerToTriple < $1 : $2 > $3 < @ $2 >

R< $+ > $+      $@ $>MailerToTriple < $1 > $2 < @ $1 >

###################################################################

###  Ruleset 95 -- canonify mailer:[user@]host syntax to triple   ###

###################################################################

SMailerToTriple=95

R< > $*            $@ $1         strip off null relay

R< error : $-.$-.$- : $+ > $*    $#error $@ $1.$2.$3 $: $4

R< error : $- : $+ > $*      $#error $@ $(dequote $1 $) $: $2

R< error : $+ > $*      $#error $: $1

R< local : $* > $*      $>CanonLocal < $1 > $2

R< $~[ : $+ @ $+ > $*<$*>$*   $# $1 $@ $3 $: $2<@$3>   use literal user

R< $~[ : $+ > $*      $# $1 $@ $2 $: $3   try qualified mailer

R< $=w > $*         $@ $2         delete local host

R< $+ > $*         $#relay $@ $1 $: $2   use unqualified mailer

###################################################################

###  Ruleset CanonLocal -- canonify local: syntax      ###

###################################################################

SCanonLocal

# strip local host from routed addresses

R< $* > < @ $+ > : $+      $@ $>Recurse $3

R< $* > $+ $=O $+ < @ $+ >   $@ $>Recurse $2 $3 $4

# strip trailing dot from any host name that may appear

R< $* > $* < @ $* . >      $: < $1 > $2 < @ $3 >

# handle local: syntax -- use old user, either with or without host

R< > $* < @ $* > $*      $#local $@ $1@$2 $: $1

R< > $+            $#local $@ $1    $: $1

# handle local:user@host syntax -- ignore host part

R< $+ @ $+ > $* < @ $* >   $: < $1 > $3 < @ $4 >

# handle local:user syntax

R< $+ > $* <@ $* > $*      $#local $@ $2@$3 $: $1

R< $+ > $*          $#local $@ $2    $: $1

###################################################################

###  Ruleset 93 -- convert header names to masqueraded form   ###

###################################################################

SMasqHdr=93

# do not masquerade anything in class N

R$* < @ $* $=N . >   $@ $1 < @ $2 $3 . >

R$* < @ *LOCAL* >   $@ $1 < @ $j . >

###################################################################

###  Ruleset 94 -- convert envelope names to masqueraded form   ###

###################################################################

SMasqEnv=94

R$* < @ *LOCAL* > $*   $: $1 < @ $j . > $2

###################################################################

###  Ruleset 98 -- local part of ruleset zero (can be null)   ###

###################################################################

SParseLocal=98

# addresses sent to foo@host.REDIRECT will give a 551 error code

R$* < @ $+ .REDIRECT. >      $: $1 < @ $2 . REDIRECT . > < ${opMode} >

R$* < @ $+ .REDIRECT. > <i>   $: $1 < @ $2 . REDIRECT. >

R$* < @ $+ .REDIRECT. > < $- >   $#error $@ 5.1.1 $: "551 User has moved; please try " <$1@$2>

######################################################################

###  CanonAddr --   Convert an address into a standard form for

###         relay checking.  Route address syntax is

###         crudely converted into a %-hack address.

###

###   Parameters:

###      $1 -- full recipient address

###

###   Returns:

###      parsed address, not in source route form

######################################################################

SCanonAddr

R$*         $: $>Parse0 $>canonify $1   make domain canonical

######################################################################

###  ParseRecipient --   Strip off hosts in $=R as well as possibly

###         $* $=m or the access database.

###         Check user portion for host separators.

###

###   Parameters:

###      $1 -- full recipient address

###

###   Returns:

###      parsed, non-local-relaying address

######################################################################

SParseRecipient

R$*            $: <?> $>CanonAddr $1

R<?> $* < @ $* . >      <?> $1 < @ $2 >         strip trailing dots

R<?> $- < @ $* >      $: <?> $(dequote $1 $) < @ $2 >   dequote local part

# if no $=O character, no host in the user portion, we are done

R<?> $* $=O $* < @ $* >      $: <NO> $1 $2 $3 < @ $4>

R<?> $*            $@ $1

R<NO> $* < @ $* $=R >      $: <RELAY> $1 < @ $2 $3 >

R<RELAY> $* < @ $* >      $@ $>ParseRecipient $1

R<$+> $*         $@ $2

######################################################################

###  check_relay -- check hostname/address on SMTP startup

######################################################################

SLocal_check_relay

Scheck_relay

R$*         $: $1 $| $>"Local_check_relay" $1

R$* $| $* $| $#$*   $#$3

R$* $| $* $| $*      $@ $>"Basic_check_relay" $1 $| $2

SBasic_check_relay

# check for deferred delivery mode

R$*         $: < $&{deliveryMode} > $1

R< d > $*      $@ deferred

R< $* > $*      $: $2

######################################################################

###  check_mail -- check SMTP `MAIL FROM:' command argument

######################################################################

SLocal_check_mail

Scheck_mail

R$*         $: $1 $| $>"Local_check_mail" $1

R$* $| $#$*      $#$2

R$* $| $*      $@ $>"Basic_check_mail" $1

SBasic_check_mail

# check for deferred delivery mode

R$*         $: < $&{deliveryMode} > $1

R< d > $*      $@ deferred

R< $* > $*      $: $2

# authenticated?

R$*         $: $1 $| $>"tls_client" $&{verify} $| MAIL

R$* $| $#$+      $#$2

R$* $| $*      $: $1

R<>         $@ <OK>         we MUST accept <> (RFC 1123)

R$+         $: <?> $1

R<?><$+>      $: <@> <$1>

R<?>$+         $: <@> <$1>

R$*         $: $&{daemon_flags} $| $1

R$* f $* $| <@> < $* @ $- >   $: < ? $&{client_name} > < $3 @ $4 >

R$* u $* $| <@> < $* >   $: <?> < $3 >

R$* $| $*      $: $2

# handle case of @localhost on address

R<@> < $* @ localhost >   $: < ? $&{client_name} > < $1 @ localhost >

R<@> < $* @ [127.0.0.1] >

         $: < ? $&{client_name} > < $1 @ [127.0.0.1] >

R<@> < $* @ localhost.$m >

         $: < ? $&{client_name} > < $1 @ localhost.$m >

R<@> < $* @ localhost.UUCP >

         $: < ? $&{client_name} > < $1 @ localhost.UUCP >

R<@> $*         $: $1         no localhost as domain

R<? $=w> $*      $: $2         local client: ok

R<? $+> <$+>      $#error $@ 5.5.4 $: "553 Real domain name required for sender address"

R<?> $*         $: $1

R$*         $: <?> $>CanonAddr $1      canonify sender address and mark it

R<?> $* < @ $+ . >   <?> $1 < @ $2 >         strip trailing dots

# handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc)

R<?> $* < @ $* $=P >   $: <OKR> $1 < @ $2 $3 >

R<?> $* < @ $j >   $: <OKR> $1 < @ $j >

R<?> $* < @ $+ >   $: <? $(resolve $2 $: $2 <PERM> $) > $1 < @ $2 >

R<? $* <$->> $* < @ $+ >

         $: <$2> $3 < @ $4 >

# handle case of no @domain on address

R<?> $*         $: $&{daemon_flags} $| <?> $1

R$* u $* $| <?> $*   $: <OKR> $3

R$* $| $*      $: $2

R<?> $*         $: < ? $&{client_addr} > $1

R<?> $*         $@ <OKR>         ...local unqualed ok

R<? $+> $*      $#error $@ 5.5.4 $: "553 Domain name required for sender address " $&f

                     ...remote is not

# check results

R<?> $*         $: @ $1      mark address: nothing known about it

R<$={ResOk}> $*      $: @ $2      domain ok

R<TEMP> $*      $#error $@ 4.1.8 $: "451 Domain of sender address " $&f " does not resolve"

R<PERM> $*      $#error $@ 5.1.8 $: "553 Domain of sender address " $&f " does not exist"

######################################################################

###  check_rcpt -- check SMTP `RCPT TO:' command argument

######################################################################

SLocal_check_rcpt

Scheck_rcpt

R$*         $: $1 $| $>"Local_check_rcpt" $1

R$* $| $#$*      $#$2

R$* $| $*      $@ $>"Basic_check_rcpt" $1

SBasic_check_rcpt

# empty address?

R<>         $#error $@ nouser $: "553 User address required"

R$@         $#error $@ nouser $: "553 User address required"

# check for deferred delivery mode

R$*         $: < $&{deliveryMode} > $1

R< d > $*      $@ deferred

R< $* > $*      $: $2

######################################################################

R$*         $: $1 $| @ $>"Rcpt_ok" $1

R$* $| @ $#TEMP $+   $: $1 $| T $2

R$* $| @ $#$*      $#$2

R$* $| @ RELAY      $@ RELAY

R$* $| @ $*      $: O $| $>"Relay_ok" $1

R$* $| T $+      $: T $2 $| $>"Relay_ok" $1

R$* $| $#TEMP $+   $#error $2

R$* $| $#$*      $#$2

R$* $| RELAY      $@ RELAY

R T $+ $| $*      $#error $1

# anything else is bogus

R$*         $#error $@ 5.7.1 $: "550 Relaying denied"

######################################################################

### Rcpt_ok: is the recipient ok?

######################################################################

SRcpt_ok

R$*         $: $>ParseRecipient $1      strip relayable hosts

# authenticated via TLS?

R$*         $: $1 $| $>RelayTLS   client authenticated?

R$* $| $# $+      $# $2         error/ok?

R$* $| $*      $: $1         no

R$*         $: $1 $| $>"Local_Relay_Auth" $&{auth_type}

R$* $| $# $*      $# $2

R$* $| NO      $: $1

R$* $| $*      $: $1 $| $&{auth_type}

R$* $|         $: $1

R$* $| $={TrustAuthMech}   $# RELAY

R$* $| $*      $: $1

# anything terminating locally is ok

R$+ < @ $=w >      $@ RELAY

R$+ < @ $* $=R >   $@ RELAY

# check for local user (i.e. unqualified address)

R$*         $: <?> $1

R<?> $* < @ $+ >   $: <REMOTE> $1 < @ $2 >

# local user is ok

R<?> $+         $@ RELAY

R<$+> $*      $: $2

######################################################################

### Relay_ok: is the relay/sender ok?

######################################################################

SRelay_ok

# anything originating locally is ok

# check IP address

R$*         $: $&{client_addr}

R$@         $@ RELAY      originated locally

R0         $@ RELAY      originated locally

R127.0.0.1      $@ RELAY      originated locally

RIPv6:::1      $@ RELAY      originated locally

R$=R $*         $@ RELAY      relayable IP address

R$*         $: [ $1 ]      put brackets around it...

R$=w         $@ RELAY      ... and see if it is local

# check client name: first: did it resolve?

R$*         $: < $&{client_resolve} >

R<TEMP>         $#TEMP $@ 4.4.0 $: "450 Relaying temporarily denied. Cannot resolve PTR record for " $&{client_addr}

R<FORGED>      $#error $@ 5.7.1 $: "550 Relaying denied. IP name possibly forged " $&{client_name}

R<FAIL>         $#error $@ 5.7.1 $: "550 Relaying denied. IP name lookup failed " $&{client_name}

R$*         $: <@> $&{client_name}

# pass to name server to make hostname canonical

R<@> $* $=P       $:<?>  $1 $2

R<@> $+         $:<?>  $[ $1 $]

R$* .         $1         strip trailing dots

R<?> $=w      $@ RELAY

R<?> $* $=R         $@ RELAY

######################################################################

###  trust_auth: is user trusted to authenticate as someone else?

###

###   Parameters:

###      $1: AUTH= parameter from MAIL command

######################################################################

SLocal_trust_auth

Strust_auth

R$*         $: $&{auth_type} $| $1

# required by RFC 2554 section 4.

R$@ $| $*      $#error $@ 5.7.1 $: "550 not authenticated"

R$* $| $&{auth_authen}      $@ identical

R$* $| <$&{auth_authen}>   $@ identical

R$* $| $*      $: $1 $| $>"Local_trust_auth" $2

R$* $| $#$*      $#$2

R$*         $#error $@ 5.7.1 $: "550 " $&{auth_authen} " not allowed to act as " $&{auth_author}

######################################################################

###  Relay_Auth: allow relaying based on authentication?

###

###   Parameters:

###      $1: ${auth_type}

######################################################################

SLocal_Relay_Auth

######################################################################

###  srv_features: which features to offer to a client?

###   (done in server)

######################################################################

Ssrv_features

######################################################################

###  try_tls: try to use STARTTLS?

###   (done in client)

######################################################################

Stry_tls

######################################################################

###  tls_rcpt: is connection with server "good" enough?

###   (done in client, per recipient)

###

###   Parameters:

###      $1: recipient

######################################################################

Stls_rcpt

######################################################################

###  tls_client: is connection with client "good" enough?

###   (done in server)

###

###   Parameters:

###      ${verify} $| (MAIL|STARTTLS)

######################################################################

Stls_client

R$* $| $*   $@ $>"TLS_connection" $1

######################################################################

###  tls_server: is connection with server "good" enough?

###   (done in client)

###

###   Parameter:

###      ${verify}

######################################################################

Stls_server

R$*      $@ $>"TLS_connection" $1

######################################################################

###  TLS_connection: is TLS connection "good" enough?

###

###   Parameters:

###      ${verify}

###      Requirement: RHS from access map, may be ? for none.

######################################################################

STLS_connection

RSOFTWARE   $#error $@ 4.7.0 $: "403 TLS handshake."

######################################################################

###  RelayTLS: allow relaying based on TLS authentication

###

###   Parameters:

###      none

######################################################################

SRelayTLS

# authenticated?

######################################################################

###  authinfo: lookup authinfo in the access map

###

###   Parameters:

###      $1: {server_name}

###      $2: {server_addr}

######################################################################

Sauthinfo

#

######################################################################

######################################################################

#####

#####         MAIL FILTER DEFINITIONS

#####

######################################################################

######################################################################

#

######################################################################

######################################################################

#####

#####         MAILER DEFINITIONS

#####

######################################################################

######################################################################

##################################################

###   Local and Program Mailer specification   ###

##################################################

#####  $Id: local.m4,v 8.59 2004/11/23 00:37:25 ca Exp $  #####

#

#  Envelope sender rewriting

#

SEnvFromL

R<@>         $n         errors to mailer-daemon

R@ <@ $*>      $n         temporarily bypass Sun bogosity

R$+         $: $>AddDomain $1   add local domain if needed

R$*         $: $>MasqEnv $1      do masquerading

#

#  Envelope recipient rewriting

#

SEnvToL

R$+ < @ $* >      $: $1         strip host part

R$+ + $*      $: < $&{addr_type} > $1 + $2   mark with addr type

R<e s> $+ + $*      $: $1         remove +detail for sender

R< $* > $+      $: $2         else remove mark

#

#  Header sender rewriting

#

SHdrFromL

R<@>         $n         errors to mailer-daemon

R@ <@ $*>      $n         temporarily bypass Sun bogosity

R$+         $: $>AddDomain $1   add local domain if needed

R$*         $: $>MasqHdr $1      do masquerading

#

#  Header recipient rewriting

#

SHdrToL

R$+         $: $>AddDomain $1   add local domain if needed

R$* < @ *LOCAL* > $*   $: $1 < @ $j . > $2

#

#  Common code to add local domain name (only if always-add-domain)

#

SAddDomain

Mlocal,      P=/usr/sbin/mail.local, F=lsDFMAw5:/|@qPSXmnz9, S=EnvFromSMTP/HdrFromL, R=EnvToL/HdrToL,

      T=DNS/RFC822/SMTP,

      A=mail.local -l

Mprog,      P=/usr/sbin/smrsh, F=lsDFMoqeu9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL, D=$z:/,

      T=X-Unix/X-Unix/X-Unix,

      A=smrsh -c $u

#####################################

###   SMTP Mailer specification   ###

#####################################

#####  $Id: smtp.m4,v 8.65 2006/07/12 21:08:10 ca Exp $  #####

#

#  common sender and masquerading recipient rewriting

#

SMasqSMTP

R$* < @ $* > $*      $@ $1 < @ $2 > $3      already fully qualified

R$+         $@ $1 < @ *LOCAL* >      add local qualification

#

#  convert pseudo-domain addresses to real domain addresses

#

SPseudoToReal

# pass <route-addr>s through

R< @ $+ > $*      $@ < @ $1 > $2         resolve <route-addr>

# output fake domains as user%fake@relay

# do UUCP heuristics; note that these are shared with UUCP mailers

R$+ < @ $+ .UUCP. >   $: < $2 ! > $1         convert to UUCP form

R$+ < @ $* > $*      $@ $1 < @ $2 > $3      not UUCP form

# leave these in .UUCP form to avoid further tampering

R< $&h ! > $- ! $+   $@ $2 < @ $1 .UUCP. >

R< $&h ! > $-.$+ ! $+   $@ $3 < @ $1.$2 >

R< $&h ! > $+      $@ $1 < @ $&h .UUCP. >

R< $+ ! > $+      $: $1 ! $2 < @ $Y >      use UUCP_RELAY

R$+ < @ $~[ $* : $+ >   $@ $1 < @ $4 >         strip mailer: part

R$+ < @ >      $: $1 < @ *LOCAL* >      if no UUCP_RELAY

#

#  envelope sender rewriting

#

SEnvFromSMTP

R$+         $: $>PseudoToReal $1      sender/recipient common

R$* :; <@>      $@            list:; special case

R$*         $: $>MasqSMTP $1      qualify unqual'ed names

R$+         $: $>MasqEnv $1         do masquerading

#

#  envelope recipient rewriting --

#  also header recipient if not masquerading recipients

#

SEnvToSMTP

R$+         $: $>PseudoToReal $1      sender/recipient common

R$+         $: $>MasqSMTP $1      qualify unqual'ed names

R$* < @ *LOCAL* > $*   $: $1 < @ $j . > $2

#

#  header sender and masquerading header recipient rewriting

#

SHdrFromSMTP

R$+         $: $>PseudoToReal $1      sender/recipient common

R:; <@>         $@            list:; special case

# do special header rewriting

R$* <@> $*      $@ $1 <@> $2         pass null host through

R< @ $* > $*      $@ < @ $1 > $2         pass route-addr through

R$*         $: $>MasqSMTP $1      qualify unqual'ed names

R$+         $: $>MasqHdr $1         do masquerading

#

#  relay mailer header masquerading recipient rewriting

#

SMasqRelay

R$+         $: $>MasqSMTP $1

R$+         $: $>MasqHdr $1

Msmtp,      P=[IPC], F=mDFMuX, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,

      T=DNS/RFC822/SMTP,

      A=TCP $h

Mesmtp,      P=[IPC], F=mDFMuXa, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,

      T=DNS/RFC822/SMTP,

      A=TCP $h

Msmtp8,      P=[IPC], F=mDFMuX8, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,

      T=DNS/RFC822/SMTP,

      A=TCP $h

Mdsmtp,      P=[IPC], F=mDFMuXa%, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,

      T=DNS/RFC822/SMTP,

      A=TCP $h

Mrelay,      P=[IPC], F=mDFMuXa8, S=EnvFromSMTP/HdrFromSMTP, R=MasqSMTP, E=\r\n, L=2040,

      T=DNS/RFC822/SMTP,

      A=TCP $h

```

the none working sendmail.cf after doing m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf (merging you sendmail.mc)

[code:1:603bb45c6f]

#divert(-1)

#divert(0)dnl

#include(`/usr/share/sendmail-cf/m4/cf.m4')dnl

#VERSIONID(`$Id: sendmail-procmail.mc,v 1.2 2004/12/07 01:59:31 g2boojum Exp $')dnl

#OSTYPE(linux)dnl

#DOMAIN(generic)dnl

#FEATURE(`smrsh',`/usr/sbin/smrsh')dnl

#FEATURE(`local_lmtp',`/usr/sbin/mail.local')dnl

#FEATURE(`local_procmail')dnl

#MAILER(local)dnl

#MAILER(smtp)dnl

#MAILER(procmail)dnl

#

# Copyright (c) 1998-2004, 2009 Sendmail, Inc. and its suppliers.

#	All rights reserved.

# Copyright (c) 1983, 1995 Eric P. Allman.  All rights reserved.

# Copyright (c) 1988, 1993

#	The Regents of the University of California.  All rights reserved.

#

# By using this file, you agree to the terms and conditions set

# forth in the LICENSE file which can be found at the top level of

# the sendmail distribution.

#

#

######################################################################

######################################################################

#####

#####		SENDMAIL CONFIGURATION FILE

#####

##### built by root@srvmon-Bellakt on РџРЅРґ РћРєС‚ 24 12:22:50 EEST 2011

##### in /root

##### using /usr/share/sendmail-cf/ as configuration include directory

#####

######################################################################

#####

#####	DO NOT EDIT THIS FILE!  Only edit the source .mc file.

#####

######################################################################

######################################################################

#####  $Id: cfhead.m4,v 8.120 2009/01/23 22:39:21 ca Exp $  #####

#####  $Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $  #####

#####  $Id: sendmail.mc,v 1.2 2002/07/04 04:55:29 g2boojum Exp $  #####

#####  $Id: linux.m4,v 8.13 2000/09/17 17:30:00 gshapiro Exp $  #####

#####  $Id: local_procmail.m4,v 8.22 2002/11/17 04:24:19 ca Exp $  #####

#####  $Id: generic.m4,v 8.15 1999/04/04 00:51:09 ca Exp $  #####

#####  $Id: redirect.m4,v 8.15 1999/08/06 01:47:36 gshapiro Exp $  #####

#####  $Id: use_cw_file.m4,v 8.11 2001/08/26 20:58:57 gshapiro Exp $  #####

#####  $Id: allmasquerade.m4,v 8.13 2000/09/12 22:00:53 ca Exp $  #####

#####  $Id: masquerade_envelope.m4,v 8.9 1999/02/07 07:26:10 gshapiro Exp $  #####

#####  $Id: smrsh.m4,v 8.14 1999/11/18 05:06:23 ca Exp $  #####

#####  $Id: local_lmtp.m4,v 8.17 2002/11/17 04:41:04 ca Exp $  #####

#####  $Id: local_procmail.m4,v 8.22 2002/11/17 04:24:19 ca Exp $  #####

Cwlocalhost.localdomain 

#####  $Id: proto.m4,v 8.741 2009/12/11 00:04:53 ca Exp $  #####

# level 10 config file format

V10/Berkeley

# override file safeties - setting this option compromises system security,

# addressing the actual file configuration problem is preferred

# need to set this before any file actions are encountered in the cf file

#O DontBlameSendmail=safe

# default LDAP map specification

# need to set this now before any LDAP maps are defined

#O LDAPDefaultSpec=-h localhost

##################

#   local info   #

##################

# my LDAP cluster

# need to set this before any LDAP lookups are done (including classes)

#D{sendmailMTACluster}$m

Cwlocalhost

# file containing names of hosts for which we receive email

Fw/etc/mail/local-host-names

# my official domain name

# ... define this only if sendmail cannot automatically determine your domain

#Dj$w.Foo.COM

# host/domain names ending with a token in class P are canonical

CP.

# "Smart" relay host (may be null)

DSmail.bellakt.com

# operators that cannot be in local usernames (i.e., network indicators)

CO @ % !

# a class with just dot (for identifying canonical names)

C..

# a class with just a left bracket (for identifying domain literals)

C[[

# Resolve map (to check if a host exists in check_mail)

Kresolve host -a<OKR> -T<TEMP>

C{ResOk}OKR

# Hosts for which relaying is permitted ($=R)

FR-o /etc/mail/relay-domains

# arithmetic map

Karith arith

# dequoting map

Kdequote dequote

# class E: names that should be exposed as from this host, even if we masquerade

# class L: names that should be delivered locally, even if we have a relay

# class M: domains that should be converted to $M

# class N: domains that should not be converted to $M

#CL root

C{E}root

# who I masquerade as (null for no masquerading) (see also $=M)

DMbellakt.com

# my name for error messages

DnMAILER-DAEMON

CPREDIRECT

# Configuration version number

DZ8.14.4

###############

#   Options   #

###############

# strip message body to 7 bits on input?

O SevenBitInput=False

# 8-bit data handling

#O EightBitMode=pass8

# wait for alias file rebuild (default units: minutes)

O AliasWait=10

# location of alias file

O AliasFile=/etc/mail/aliases

# minimum number of free blocks on filesystem

O MinFreeBlocks=100

# maximum message size

#O MaxMessageSize=0

# substitution for space (blank) characters

O BlankSub=.

# avoid connecting to "expensive" mailers on initial submission?

O HoldExpensive=False

# checkpoint queue runs after every N successful deliveries

#O CheckpointInterval=10

# default delivery mode

O DeliveryMode=background

# error message header/file

#O ErrorHeader=/etc/mail/error-header

# error mode

#O ErrorMode=print

# save Unix-style "From_" lines at top of header?

#O SaveFromLine=False

# queue file mode (qf files)

#O QueueFileMode=0600

# temporary file mode

O TempFileMode=0600

# match recipients against GECOS field?

#O MatchGECOS=False

# maximum hop count

#O MaxHopCount=25

# location of help file

O HelpFile=/etc/mail/helpfile

# ignore dots as terminators in incoming messages?

#O IgnoreDots=False

# name resolver options

#O ResolverOptions=+AAONLY

# deliver MIME-encapsulated error messages?

O SendMimeErrors=True

# Forward file search path

O ForwardPath=$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward

# open connection cache size

O ConnectionCacheSize=2

# open connection cache timeout

O ConnectionCacheTimeout=5m

# persistent host status directory

#O HostStatusDirectory=.hoststat

# single thread deliveries (requires HostStatusDirectory)?

#O SingleThreadDelivery=False

# use Errors-To: header?

O UseErrorsTo=False

# log level

O LogLevel=9

# send to me too, even in an alias expansion?

#O MeToo=True

# verify RHS in newaliases?

O CheckAliases=False

# default messages to old style headers if no special punctuation?

O OldStyleHeaders=True

# SMTP daemon options

O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA

O DaemonPortOptions=Port=587, Name=MSA, M=E

# SMTP client options

#O ClientPortOptions=Family=inet, Address=0.0.0.0

# Modifiers to define {daemon_flags} for direct submissions

#O DirectSubmissionModifiers

# Use as mail submission program? See sendmail/SECURITY

#O UseMSP

# privacy flags

O PrivacyOptions=authwarnings

# who (if anyone) should get extra copies of error messages

#O PostmasterCopy=Postmaster

# slope of queue-only function

#O QueueFactor=600000

# limit on number of concurrent queue runners

#O MaxQueueChildren

# maximum number of queue-runners per queue-grouping with multiple queues

#O MaxRunnersPerQueue=1

# priority of queue runners (nice(3))

#O NiceQueueRun

# shall we sort the queue by hostname first?

#O QueueSortOrder=priority

# minimum time in queue before retry

#O MinQueueAge=30m

# how many jobs can you process in the queue?

#O MaxQueueRunSize=0

# perform initial split of envelope without checking MX records

#O FastSplit=1

# queue directory

O QueueDirectory=/var/spool/mqueue

# key for shared memory; 0 to turn off, -1 to auto-select

#O SharedMemoryKey=0

# file to store auto-selected key for shared memory (SharedMemoryKey = -1)

#O SharedMemoryKeyFile

# timeouts (many of these)

#O Timeout.initial=5m

#O Timeout.connect=5m

#O Timeout.aconnect=0s

#O Timeout.iconnect=5m

#O Timeout.helo=5m

#O Timeout.mail=10m

#O Timeout.rcpt=1h

#O Timeout.datainit=5m

#O Timeout.datablock=1h

#O Timeout.datafinal=1h

#O Timeout.rset=5m

#O Timeout.quit=2m

#O Timeout.misc=2m

#O Timeout.command=1h

#O Timeout.ident=5s

#O Timeout.fileopen=60s

#O Timeout.control=2m

O Timeout.queuereturn=5d

#O Timeout.queuereturn.normal=5d

#O Timeout.queuereturn.urgent=2d

#O Timeout.queuereturn.non-urgent=7d

#O Timeout.queuereturn.dsn=5d

O Timeout.queuewarn=4h

#O Timeout.queuewarn.normal=4h

#O Timeout.queuewarn.urgent=1h

#O Timeout.queuewarn.non-urgent=12h

#O Timeout.queuewarn.dsn=4h

#O Timeout.hoststatus=30m

#O Timeout.resolver.retrans=5s

#O Timeout.resolver.retrans.first=5s

#O Timeout.resolver.retrans.normal=5s

#O Timeout.resolver.retry=4

#O Timeout.resolver.retry.first=4

#O Timeout.resolver.retry.normal=4

#O Timeout.lhlo=2m

#O Timeout.auth=10m

#O Timeout.starttls=1h

# time for DeliverBy; extension disabled if less than 0

#O DeliverByMin=0

# should we not prune routes in route-addr syntax addresses?

#O DontPruneRoutes=False

# queue up everything before forking?

O SuperSafe=True

# status file

#O StatusFile

# time zone handling:

#  if undefined, use system default

#  if defined but null, use TZ envariable passed in

#  if defined and non-null, use that info

#O TimeZoneSpec=

# default UID (can be username or userid:groupid)

O DefaultUser=8:12

# list of locations of user database file (null means no lookup)

#O UserDatabaseSpec=/etc/mail/userdb

# fallback MX host

#O FallbackMXhost=fall.back.host.net

# fallback smart host

#O FallbackSmartHost=fall.back.host.net

# if we are the best MX host for a site, try it directly instead of config err

#O TryNullMXList=False

# load average at which we just queue messages

#O QueueLA=8

# load average at which we refuse connections

#O RefuseLA=12

# log interval when refusing connections for this long

#O RejectLogInterval=3h

# load average at which we delay connections; 0 means no limit

#O DelayLA=0

# maximum number of children we allow at one time

#O MaxDaemonChildren=0

# maximum number of new connections per second

#O ConnectionRateThrottle=0

# Width of the window 

#O ConnectionRateWindowSize=60s

# work recipient factor

#O RecipientFactor=30000

# deliver each queued job in a separate process?

#O ForkEachJob=False

# work class factor

#O ClassFactor=1800

# work time factor

#O RetryFactor=90000

# default character set

#O DefaultCharSet=unknown-8bit

# service switch file (name hardwired on Solaris, Ultrix, OSF/1, others)

#O ServiceSwitchFile=/etc/mail/service.switch

# hosts file (normally /etc/hosts)

#O HostsFile=/etc/hosts

# dialup line delay on connection failure

#O DialDelay=0s

# action to take if there are no recipients in the message

#O NoRecipientAction=none

# chrooted environment for writing to files

#O SafeFileEnvironment

# are colons OK in addresses?

#O ColonOkInAddr=True

# shall I avoid expanding CNAMEs (violates protocols)?

#O DontExpandCnames=False

# SMTP initial login message (old $e macro)

O SmtpGreetingMessage=$j Sendmail $v/$Z; $b

# UNIX initial From header format (old $l macro)

O UnixFromLine=From $g $d

# From: lines that have embedded newlines are unwrapped onto one line

#O SingleLineFromHeader=False

# Allow HELO SMTP command that does not include a host name

#O AllowBogusHELO=False

# Characters to be quoted in a full name phrase (@,;:\()[] are automatic)

#O MustQuoteChars=.

# delimiter (operator) characters (old $o macro)

O OperatorChars=.:%@!^/[]+

# shall I avoid calling initgroups(3) because of high NIS costs?

#O DontInitGroups=False

# are group-writable :include: and .forward files (un)trustworthy?

# True (the default) means they are not trustworthy.

#O UnsafeGroupWrites=True

# where do errors that occur when sending errors get sent?

#O DoubleBounceAddress=postmaster

# issue temporary errors (4xy) instead of permanent errors (5xy)?

#O SoftBounce=False

# where to save bounces if all else fails

#O DeadLetterDrop=/var/tmp/dead.letter

# what user id do we assume for the majority of the processing?

#O RunAsUser=sendmail

# maximum number of recipients per SMTP envelope

#O MaxRecipientsPerMessage=0

# limit the rate recipients per SMTP envelope are accepted

# once the threshold number of recipients have been rejected

#O BadRcptThrottle=0

# shall we get local names from our installed interfaces?

#O DontProbeInterfaces=False

# Return-Receipt-To: header implies DSN request

#O RrtImpliesDsn=False

# override connection address (for testing)

#O ConnectOnlyTo=0.0.0.0

# Trusted user for file ownership and starting the daemon

#O TrustedUser=root

# Control socket for daemon management

#O ControlSocketName=/var/spool/mqueue/.control

# Maximum MIME header length to protect MUAs

#O MaxMimeHeaderLength=0/0

# Maximum length of the sum of all headers

O MaxHeadersLength=32768

# Maximum depth of alias recursion

#O MaxAliasRecursion=10

# location of pid file

#O PidFile=/var/run/sendmail.pid

# Prefix string for the process title shown on 'ps' listings

#O ProcessTitlePrefix=prefix

# Data file (df) memory-buffer file maximum size

#O DataFileBufferSize=4096

# Transcript file (xf) memory-buffer file maximum size

#O XscriptFileBufferSize=40

----------

## Majed17

i have tried your configuration and it doesn't work for sendmail.

here is my sendmail.mc configuration:

```

divert(-1)

divert(0)dnl

include(`/usr/share/sendmail-cf/m4/cf.m4')dnl

VERSIONID(`$Id: sendmail.mc,v 1.2 2004/12/07 01:59:31 g2boojum Exp $')dnl

OSTYPE(linux)dnl

DOMAIN(generic)dnl

FEATURE(`smrsh',`/usr/sbin/smrsh')dnl

FEATURE(`local_lmtp',`/usr/sbin/mail.local')dnl

MAILER(local)dnl

MAILER(smtp)dnl
```

it was according to your suggestion:

```

#divert(-1)

#divert(0)dnl

#include(`/usr/share/sendmail-cf/m4/cf.m4')dnl

#VERSIONID(`$Id: sendmail-procmail.mc,v 1.2 2004/12/07 01:59:31 g2boojum Exp $')dnl

#OSTYPE(linux)dnl

#DOMAIN(generic)dnl

#FEATURE(`smrsh',`/usr/sbin/smrsh')dnl

#FEATURE(`local_lmtp',`/usr/sbin/mail.local')dnl

#FEATURE(`local_procmail')dnl

#MAILER(local)dnl

#MAILER(smtp)dnl

#MAILER(procmail)dnl

divert(-1)

#

# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.

#       All rights reserved.

# Copyright (c) 1983 Eric P. Allman.  All rights reserved.

# Copyright (c) 1988, 1993

#       The Regents of the University of California.  All rights reserved.

#

# By using this file, you agree to the terms and conditions set

# forth in the LICENSE file which can be found at the top level of

# the sendmail distribution.

#

#

divert(0)dnl

include(`/usr/share/sendmail-cf/m4/cf.m4')dnl

define(`confDEF_USER_ID',``8:12'')dnl

VERSIONID(`$Id: sendmail.mc,v 1.2 2002/07/04 04:55:29 g2boojum Exp $')dnl

OSTYPE(linux)dnl

DOMAIN(generic)dnl

define(`SMART_HOST',`mail.bellakt.com')dnl

MASQUERADE_AS(bellakt.com)dnl

FEATURE(`allmasquerade')dnl

FEATURE(`masquerade_envelope')dnl

define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl

FEATURE(`smrsh',`/usr/sbin/smrsh')dnl

FEATURE(`local_lmtp',`/usr/sbin/mail.local')dnl

FEATURE(`local_procmail')dnl

define(`PROCMAIL_MAILER_FLAGS',`procmail -Y -m $h $g $u')dnl

define(`PROCMAIL_MAILER_ARGS',`procmail -Y -m $h $g $u')dnl

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

MAILER(procmail)dnl

MAILER(local)dnl

MAILER(smtp)dnl

Cwlocalhost.localdomain 
```

part of working configuration of sendmail.cf

```
#

# Copyright (c) 1998-2004, 2009 Sendmail, Inc. and its suppliers.

#   All rights reserved.

# Copyright (c) 1983, 1995 Eric P. Allman.  All rights reserved.

# Copyright (c) 1988, 1993

#   The Regents of the University of California.  All rights reserved.

#

# By using this file, you agree to the terms and conditions set

# forth in the LICENSE file which can be found at the top level of

# the sendmail distribution.

#

#

######################################################################

######################################################################

#####

#####      SENDMAIL CONFIGURATION FILE

#####

##### built by root@srvmon on рОД жЕЧ 15 16:28:46 EET 2010

##### in /var/tmp/portage/mail-mta/sendmail-8.14.4/work/sendmail-8.14.4

##### using /var/tmp/portage/mail-mta/sendmail-8.14.4/image//usr/share/sendmail-cf/ as configuration include directory

#####

######################################################################

#####

#####   DO NOT EDIT THIS FILE!  Only edit the source .mc file.

#####

######################################################################

######################################################################

#####  $Id: cfhead.m4,v 8.120 2009/01/23 22:39:21 ca Exp $  #####

#####  $Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $  #####

#####  $Id: sendmail.mc,v 1.2 2004/12/07 01:59:31 g2boojum Exp $  #####

#####  $Id: linux.m4,v 8.13 2000/09/17 17:30:00 gshapiro Exp $  #####

#####  $Id: local_procmail.m4,v 8.22 2002/11/17 04:24:19 ca Exp $  #####

#####  $Id: generic.m4,v 8.15 1999/04/04 00:51:09 ca Exp $  #####

#####  $Id: redirect.m4,v 8.15 1999/08/06 01:47:36 gshapiro Exp $  #####

#####  $Id: use_cw_file.m4,v 8.11 2001/08/26 20:58:57 gshapiro Exp $  #####

#####  $Id: smrsh.m4,v 8.14 1999/11/18 05:06:23 ca Exp $  #####

#####  $Id: local_lmtp.m4,v 8.17 2002/11/17 04:41:04 ca Exp $  #####

#####  $Id: proto.m4,v 8.741 2009/12/11 00:04:53 ca Exp $  #####

# level 10 config file format

V10/Berkeley

# override file safeties - setting this option compromises system security,

# addressing the actual file configuration problem is preferred

# need to set this before any file actions are encountered in the cf file

#O DontBlameSendmail=safe

# default LDAP map specification

# need to set this now before any LDAP maps are defined

#O LDAPDefaultSpec=-h localhost

##################

#   local info   #

##################

# my LDAP cluster

# need to set this before any LDAP lookups are done (including classes)

#D{sendmailMTACluster}$m

Cwlocalhost

# file containing names of hosts for which we receive email

Fw/etc/mail/local-host-names

# my official domain name

# ... define this only if sendmail cannot automatically determine your domain

#Dj$w.Foo.COM

# host/domain names ending with a token in class P are canonical

CP.

# "Smart" relay host (may be null)

DS

# operators that cannot be in local usernames (i.e., network indicators)

CO @ % !

# a class with just dot (for identifying canonical names)

C..

# a class with just a left bracket (for identifying domain literals)

C[[

# Resolve map (to check if a host exists in check_mail)

Kresolve host -a<OKR> -T<TEMP>

C{ResOk}OKR

# Hosts for which relaying is permitted ($=R)

FR-o /etc/mail/relay-domains

# arithmetic map

Karith arith

# dequoting map

Kdequote dequote

# class E: names that should be exposed as from this host, even if we masquerade

# class L: names that should be delivered locally, even if we have a relay

# class M: domains that should be converted to $M

# class N: domains that should not be converted to $M

#CL root

C{E}root

# my name for error messages

DnMAILER-DAEMON

CPREDIRECT

# Configuration version number

DZ8.14.4

###############

#   Options   #

###############

# strip message body to 7 bits on input?

O SevenBitInput=False

# 8-bit data handling

#O EightBitMode=pass8

# wait for alias file rebuild (default units: minutes)

O AliasWait=10

# location of alias file

O AliasFile=/etc/mail/aliases

# minimum number of free blocks on filesystem

O MinFreeBlocks=100

# maximum message size

#O MaxMessageSize=0

# substitution for space (blank) characters

O BlankSub=.

# avoid connecting to "expensive" mailers on initial submission?

O HoldExpensive=False

# checkpoint queue runs after every N successful deliveries

#O CheckpointInterval=10

# default delivery mode

O DeliveryMode=background

# error message header/file

#O ErrorHeader=/etc/mail/error-header

# error mode

#O ErrorMode=print

# save Unix-style "From_" lines at top of header?

#O SaveFromLine=False

# queue file mode (qf files)

#O QueueFileMode=0600

# temporary file mode

O TempFileMode=0600

# match recipients against GECOS field?

#O MatchGECOS=False

# maximum hop count

#O MaxHopCount=25

# location of help file

O HelpFile=/etc/mail/helpfile

# ignore dots as terminators in incoming messages?

#O IgnoreDots=False

# name resolver options

#O ResolverOptions=+AAONLY

# deliver MIME-encapsulated error messages?

O SendMimeErrors=True

# Forward file search path

O ForwardPath=$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward

# open connection cache size

O ConnectionCacheSize=2

# open connection cache timeout

O ConnectionCacheTimeout=5m

# persistent host status directory

#O HostStatusDirectory=.hoststat

# single thread deliveries (requires HostStatusDirectory)?

#O SingleThreadDelivery=False

# use Errors-To: header?

O UseErrorsTo=False

# log level

O LogLevel=9

# send to me too, even in an alias expansion?

#O MeToo=True

# verify RHS in newaliases?

O CheckAliases=False

# default messages to old style headers if no special punctuation?

O OldStyleHeaders=True

# SMTP daemon options

O DaemonPortOptions=Name=MTA

O DaemonPortOptions=Port=587, Name=MSA, M=E

# SMTP client options

#O ClientPortOptions=Family=inet, Address=0.0.0.0

# Modifiers to define {daemon_flags} for direct submissions

#O DirectSubmissionModifiers

# Use as mail submission program? See sendmail/SECURITY

#O UseMSP

# privacy flags

O PrivacyOptions=authwarnings

# who (if anyone) should get extra copies of error messages

#O PostmasterCopy=Postmaster

# slope of queue-only function

#O QueueFactor=600000

# limit on number of concurrent queue runners

#O MaxQueueChildren

# maximum number of queue-runners per queue-grouping with multiple queues

#O MaxRunnersPerQueue=1

# priority of queue runners (nice(3))

#O NiceQueueRun

# shall we sort the queue by hostname first?

#O QueueSortOrder=priority

# minimum time in queue before retry

#O MinQueueAge=30m

# how many jobs can you process in the queue?

#O MaxQueueRunSize=0

# perform initial split of envelope without checking MX records

#O FastSplit=1

# queue directory

O QueueDirectory=/var/spool/mqueue

# key for shared memory; 0 to turn off, -1 to auto-select

#O SharedMemoryKey=0

# file to store auto-selected key for shared memory (SharedMemoryKey = -1)

#O SharedMemoryKeyFile

```

part of the none working sendmail.cf after doing m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf (merging you sendmail.mc)

```

#divert(-1)

#divert(0)dnl

#include(`/usr/share/sendmail-cf/m4/cf.m4')dnl

#VERSIONID(`$Id: sendmail-procmail.mc,v 1.2 2004/12/07 01:59:31 g2boojum Exp $')dnl

#OSTYPE(linux)dnl

#DOMAIN(generic)dnl

#FEATURE(`smrsh',`/usr/sbin/smrsh')dnl

#FEATURE(`local_lmtp',`/usr/sbin/mail.local')dnl

#FEATURE(`local_procmail')dnl

#MAILER(local)dnl

#MAILER(smtp)dnl

#MAILER(procmail)dnl

#

# Copyright (c) 1998-2004, 2009 Sendmail, Inc. and its suppliers.

#   All rights reserved.

# Copyright (c) 1983, 1995 Eric P. Allman.  All rights reserved.

# Copyright (c) 1988, 1993

#   The Regents of the University of California.  All rights reserved.

#

# By using this file, you agree to the terms and conditions set

# forth in the LICENSE file which can be found at the top level of

# the sendmail distribution.

#

#

######################################################################

######################################################################

#####

#####      SENDMAIL CONFIGURATION FILE

#####

##### built by root@srvmon-Bellakt on РџРЅРґ РћРєС‚ 24 12:22:50 EEST 2011

##### in /root

##### using /usr/share/sendmail-cf/ as configuration include directory

#####

######################################################################

#####

#####   DO NOT EDIT THIS FILE!  Only edit the source .mc file.

#####

######################################################################

######################################################################

#####  $Id: cfhead.m4,v 8.120 2009/01/23 22:39:21 ca Exp $  #####

#####  $Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $  #####

#####  $Id: sendmail.mc,v 1.2 2002/07/04 04:55:29 g2boojum Exp $  #####

#####  $Id: linux.m4,v 8.13 2000/09/17 17:30:00 gshapiro Exp $  #####

#####  $Id: local_procmail.m4,v 8.22 2002/11/17 04:24:19 ca Exp $  #####

#####  $Id: generic.m4,v 8.15 1999/04/04 00:51:09 ca Exp $  #####

#####  $Id: redirect.m4,v 8.15 1999/08/06 01:47:36 gshapiro Exp $  #####

#####  $Id: use_cw_file.m4,v 8.11 2001/08/26 20:58:57 gshapiro Exp $  #####

#####  $Id: allmasquerade.m4,v 8.13 2000/09/12 22:00:53 ca Exp $  #####

#####  $Id: masquerade_envelope.m4,v 8.9 1999/02/07 07:26:10 gshapiro Exp $  #####

#####  $Id: smrsh.m4,v 8.14 1999/11/18 05:06:23 ca Exp $  #####

#####  $Id: local_lmtp.m4,v 8.17 2002/11/17 04:41:04 ca Exp $  #####

#####  $Id: local_procmail.m4,v 8.22 2002/11/17 04:24:19 ca Exp $  #####

Cwlocalhost.localdomain 

#####  $Id: proto.m4,v 8.741 2009/12/11 00:04:53 ca Exp $  #####

# level 10 config file format

V10/Berkeley

# override file safeties - setting this option compromises system security,

# addressing the actual file configuration problem is preferred

# need to set this before any file actions are encountered in the cf file

#O DontBlameSendmail=safe

# default LDAP map specification

# need to set this now before any LDAP maps are defined

#O LDAPDefaultSpec=-h localhost

##################

#   local info   #

##################

# my LDAP cluster

# need to set this before any LDAP lookups are done (including classes)

#D{sendmailMTACluster}$m

Cwlocalhost

# file containing names of hosts for which we receive email

Fw/etc/mail/local-host-names

# my official domain name

# ... define this only if sendmail cannot automatically determine your domain

#Dj$w.Foo.COM

# host/domain names ending with a token in class P are canonical

CP.

# "Smart" relay host (may be null)

DSmail.bellakt.com

# operators that cannot be in local usernames (i.e., network indicators)

CO @ % !

# a class with just dot (for identifying canonical names)

C..

# a class with just a left bracket (for identifying domain literals)

C[[

# Resolve map (to check if a host exists in check_mail)

Kresolve host -a<OKR> -T<TEMP>

C{ResOk}OKR

# Hosts for which relaying is permitted ($=R)

FR-o /etc/mail/relay-domains

# arithmetic map

Karith arith

# dequoting map

Kdequote dequote

# class E: names that should be exposed as from this host, even if we masquerade

# class L: names that should be delivered locally, even if we have a relay

# class M: domains that should be converted to $M

# class N: domains that should not be converted to $M

#CL root

C{E}root

# who I masquerade as (null for no masquerading) (see also $=M)

DMbellakt.com

# my name for error messages

DnMAILER-DAEMON

CPREDIRECT

# Configuration version number

DZ8.14.4

###############

#   Options   #

###############

# strip message body to 7 bits on input?

O SevenBitInput=False

# 8-bit data handling

#O EightBitMode=pass8

# wait for alias file rebuild (default units: minutes)

O AliasWait=10

# location of alias file

O AliasFile=/etc/mail/aliases

# minimum number of free blocks on filesystem

O MinFreeBlocks=100

# maximum message size

#O MaxMessageSize=0

# substitution for space (blank) characters

O BlankSub=.

# avoid connecting to "expensive" mailers on initial submission?

O HoldExpensive=False

# checkpoint queue runs after every N successful deliveries

#O CheckpointInterval=10

# default delivery mode

O DeliveryMode=background

# error message header/file

#O ErrorHeader=/etc/mail/error-header

# error mode

#O ErrorMode=print

# save Unix-style "From_" lines at top of header?

#O SaveFromLine=False

# queue file mode (qf files)

#O QueueFileMode=0600

# temporary file mode

O TempFileMode=0600

# match recipients against GECOS field?

#O MatchGECOS=False

# maximum hop count

#O MaxHopCount=25

# location of help file

O HelpFile=/etc/mail/helpfile

# ignore dots as terminators in incoming messages?

#O IgnoreDots=False

# name resolver options

#O ResolverOptions=+AAONLY

# deliver MIME-encapsulated error messages?

O SendMimeErrors=True

# Forward file search path

O ForwardPath=$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward

# open connection cache size

O ConnectionCacheSize=2

# open connection cache timeout

O ConnectionCacheTimeout=5m

# persistent host status directory

#O HostStatusDirectory=.hoststat

# single thread deliveries (requires HostStatusDirectory)?

#O SingleThreadDelivery=False

# use Errors-To: header?

O UseErrorsTo=False

# log level

O LogLevel=9

# send to me too, even in an alias expansion?

#O MeToo=True

# verify RHS in newaliases?

O CheckAliases=False

# default messages to old style headers if no special punctuation?

O OldStyleHeaders=True

# SMTP daemon options

O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA

O DaemonPortOptions=Port=587, Name=MSA, M=E

# SMTP client options

#O ClientPortOptions=Family=inet, Address=0.0.0.0

# Modifiers to define {daemon_flags} for direct submissions

#O DirectSubmissionModifiers

# Use as mail submission program? See sendmail/SECURITY

#O UseMSP

# privacy flags

O PrivacyOptions=authwarnings

# who (if anyone) should get extra copies of error messages

#O PostmasterCopy=Postmaster

# slope of queue-only function

#O QueueFactor=600000

# limit on number of concurrent queue runners

#O MaxQueueChildren

# maximum number of queue-runners per queue-grouping with multiple queues

#O MaxRunnersPerQueue=1

# priority of queue runners (nice(3))

#O NiceQueueRun

# shall we sort the queue by hostname first?

#O QueueSortOrder=priority

# minimum time in queue before retry

#O MinQueueAge=30m

# how many jobs can you process in the queue?

#O MaxQueueRunSize=0

# perform initial split of envelope without checking MX records

#O FastSplit=1

# queue directory

O QueueDirectory=/var/spool/mqueue

# key for shared memory; 0 to turn off, -1 to auto-select

#O SharedMemoryKey=0

# file to store auto-selected key for shared memory (SharedMemoryKey = -1)

#O SharedMemoryKeyFile

```

part of working log file:

```

Oct 24 14:03:01 srvmon-Bellakt sendmail[30926]: p9OB314m030926: from=root, size=307, class=0, nrcpts=1, msgid=<201110241103.p9OB314m030926@srvmon-Bellakt.Bellakt.com>, relay=root@localhost

Oct 24 14:03:01 srvmon-Bellakt sm-mta[30927]: p9OB31hW030927: from=<root@srvmon-Bellakt.Bellakt.com>, size=606, class=0, nrcpts=1, msgid=<201110241103.p9OB314m030926@srvmon-Bellakt.Bellakt.com>, proto=ESMTP, daemon=MTA, relay=srvmon-Bellakt.Bellakt.com [127.0.0.1]

Oct 24 14:03:01 srvmon-Bellakt sendmail[30926]: p9OB314m030926: to=root, ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30307, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (p9OB31hW030927 Message accepted for delivery)

Oct 24 14:03:01 srvmon-Bellakt sm-mta[30928]: p9OB31hW030927: to=<root@srvmon-Bellakt.Bellakt.com>, ctladdr=<root@srvmon-Bellakt.Bellakt.com> (0/0), delay=00:00:00, xdelay=00:00:00, mailer=local, pri=30857, relay=local, dsn=2.0.0, stat=Sent

```

part of log file when messages were not sent:

```

Oct 24 12:21:20 srvmon-Bellakt sendmail[1786]: p9O9LAQL001786: from=root, size=8, class=0, nrcpts=1, msgid=<201110240921.p9O9LAQL001786@srvmon-Bellakt.Bellakt.com>, relay=root@localhost

Oct 24 12:21:20 srvmon-Bellakt sm-mta[1889]: p9O9LKau001889: from=<root@srvmon-Bellakt.Bellakt.com>, size=327, class=0, nrcpts=1, msgid=<201110240921.p9O9LAQL001786@srvmon-Bellakt.Bellakt.com>, proto=ESMTP, daemon=MTA, relay=srvmon-Bellakt.Bellakt.com [127.0.0.1]

Oct 24 12:21:20 srvmon-Bellakt sendmail[1786]: p9O9LAQL001786: to=monitoring@profiland.by, ctladdr=root (0/0), delay=00:00:10, xdelay=00:00:00, mailer=relay, pri=30008, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (p9O9LKau001889 Message accepted for delivery)

Oct 24 12:21:25 srvmon-Bellakt sm-mta[1891]: p9O9LKau001889: to=<monitoring@profiland.by>, ctladdr=<root@srvmon-Bellakt.Bellakt.com> (0/0), delay=00:00:05, xdelay=00:00:05, mailer=relay, pri=120327, relay=mail.bellakt.com. [172.16.1.100], dsn=5.7.1, stat=User unknown

Oct 24 12:21:35 srvmon-Bellakt sm-mta[1891]: p9O9LKau001889: p9O9LZau001891: DSN: User unknown

```

it seems not specifying mail.bellakt.com as smtp server did the trick...any ideas?

----------

