Sendmail: how to restrict delivery based on "to" or "from"?


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users Sendmail: how to restrict delivery based on "to" or "from"?
# 1  
Old 10-31-2011
Sendmail: how to restrict delivery based on "to" or "from"?

Hello,

I manage a large sendmail server that handles more than 20,000 pieces of mail per day. It's a bit unusual in that all this mail is only being sent to and from 4 local accounts. (It's an automated transaction processing system, whereby users submit a transaction via email attachment). I've got Sendmail configured to use Procmail for local delivery. My Procmail recipe then calls Cyrus Deliver for final message delivery into my Cyrus IMAP database. The four local mail accounts exist only within the Cyrus IMAP database, they are not unix user accounts on the system.

My problem is that Sendmail, when it receives a piece of incoming mail, has no way of determining if it's addressed to a valid account or not. It simply hands the mail to Procmail and lets procmail sort it out. Unfortunately, if someone makes a typo in the destination address, procmail simply drops the mail into a black hole and the person who submitted it never knows what happened!

For example, lets say one of my mail accounts is named Process@mydomain.com. If someone accidentally sends the mail to Lrocess@mydomain.com he does not receive any kind of rejection notice. Sendmail gladly accepts the message, hands it to Procmail for delivery, and then Procmail delivers it into an errors folder.

My understanding is that invalid account rejection should happen at the Sendmail level. How do I implement this in Sendmail? Here is the local delivery portion of my Sendmail.cf file:

# Cyrus Mailer using Procmail
Mprocmail, P=/usr/bin/procmail, F=lsDFMnPqA5@, S=10, R=20/40, T=X-Unix,
U=cyrus:mail,
A=procmail -p /etc/procmail/procmail.global CYRUSUSER=$u


I want Sendmail to call Procmail only for the four valid local accounts. For all other incoming mail, I want Sendmail to automatically bounce it back to the sender with an appropriate "invalid recipient" message.

Does anyone know how to do this? Thank you

Last edited by lupin..the..3rd; 10-31-2011 at 07:35 PM..
# 2  
Old 10-31-2011
Remove procmail as the default delivery in the sendmail configuration.
Add 4 entries to the alias file so that:

process1: |/usr/bin/SendtoProcmail
process2: |/usr/bin/SendtoProcmail1 (if the processes are different for each recipient)
etc
Run newaliases.
Any mail not for process1-4 will be returned with a user not found message.
This User Gave Thanks to jgt For This Post:
# 3  
Old 10-31-2011
Interesting, I didn't know the aliases file could be used in that way. Thanks, I'll do some testing with it. Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. AIX

Apache 2.4 directory cannot display "Last modified" "Size" "Description"

Hi 2 all, i have had AIX 7.2 :/# /usr/IBMAHS/bin/apachectl -v Server version: Apache/2.4.12 (Unix) Server built: May 25 2015 04:58:27 :/#:/# /usr/IBMAHS/bin/apachectl -M Loaded Modules: core_module (static) so_module (static) http_module (static) mpm_worker_module (static) ... (3 Replies)
Discussion started by: penchev
3 Replies

2. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies

3. UNIX for Dummies Questions & Answers

Using "mailx" command to read "to" and "cc" email addreses from input file

How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address and column 3 contains “cc” e-mail address to include with same email. Sample input file, email.txt Below is an sample code where... (2 Replies)
Discussion started by: asjaiswal
2 Replies

4. Solaris

The slices "usr", "opt", "tmp" disappeared!!! Help please.

The system don't boot. on the screen appears following: press enter to maintenance (or type CTRL-D to continue)...I checked with format command. ... the slices "0-root","1-swap","2-backup" exist. ...the slises "3-var","6-usr" -unassigned. :( (16 Replies)
Discussion started by: wolfgang
16 Replies

5. Shell Programming and Scripting

how to use "cut" or "awk" or "sed" to remove a string

logs: "/home/abc/public_html/index.php" "/home/abc/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" how to use "cut" or "awk" or "sed" to get the following result: abc abc xyz xyz xyz (8 Replies)
Discussion started by: timmywong
8 Replies

6. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

7. Shell Programming and Scripting

"Join" or "Merge" more than 2 files into single output based on common key (column)

Hi All, I have working (Perl) code to combine 2 input files into a single output file using the join function that works to a point, but has the following limitations: 1. I am restrained to 2 input files only. 2. Only the "matched" fields are written out to the "matched" output file and... (1 Reply)
Discussion started by: Katabatic
1 Replies

8. Shell Programming and Scripting

cat $como_file | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g'

hi All, cat file_name | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g' Can this be done by using sed or awk alone (4 Replies)
Discussion started by: harshakusam
4 Replies

9. UNIX for Dummies Questions & Answers

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

Hi Friends, Can any of you explain me about the below line of code? mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'` Im not able to understand, what exactly it is doing :confused: Any help would be useful for me. Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies
Login or Register to Ask a Question