LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Software (https://www.linuxquestions.org/questions/linux-software-2/)
-   -   Procmail or other filter for outgoing mail (https://www.linuxquestions.org/questions/linux-software-2/procmail-or-other-filter-for-outgoing-mail-78056/)

gabriele_101 08-01-2003 11:48 AM

Procmail or other filter for outgoing mail
 
Is there a way to send outgoing mail to procmail or some other script before sending it out?

My users (specifically my family, friends) want to have their mail archived so that when they accidentally delete stuff they can call me up and beg me to restore it.

I've set up mail archiving on incoming mail using procmail, but don't know how to do it with outgoing mail. I have both sendmail and qmail installed, and am thinking of just using qmail but don't care all that much.

If I had the choice, I would prefer a method that allowed me to give the users the ability to turn archiving on/off so that if they have privacy concerns they can turn it off.

Any input would be GREATLY appreciated.

Thanks,

-G

Pcghost 08-01-2003 02:19 PM

I think you could set up postfix or sendmail to handle outgoing mail, but I believe it is done with either a seperate machine or a seperate instance of the program handling outbound. Check the documentation of the mail server you choose carefully to see if it supports it.

unSpawn 08-06-2003 08:50 AM

Maybe try http://www.nber.org/copy-out.html

gabriele_101 08-18-2003 05:35 PM

Filtering Outgoing Mail
 
OK, I've tried it all, and nothing seems to work!

I've used the info at http://www.nber.org/copy-out.html and followed some of the follow-up suggestions. I've googled for hours now, and found nothing that works. When I add:

Code:

MAILER(procmail)dnl
LOCAL_RULE_0
R$*<@$*.procmail>$* $1@<$2>$3  map back of procmail copy
dnl This line below seems to cause the errors
R$*<@$+>$*  $#procmail $@/etc/procmailrc.out $:$1@$2procmail$3  send all external mail to procmail
d

To my sendmail.mc ; however, when I send or recieve email I get this error:

Code:

The original message was received at Mon, 18 Aug 2003 18:15:30 -0400
from localhost
with id h7IMFUP2007576

  ----- The following addresses had permanent fatal errors -----
<root@foobar.com> (reason: Can't create output)

  ----- Transcript of session follows -----
550 5.0.0 <root@foobar.com>... Can't create output

[ Part 2: "Delivery Status" ]

Reporting-MTA: dns; foobar.com
Received-From-MTA: DNS; localhost.localdomain
Arrival-Date: Mon, 18 Aug 2003 18:15:30 -0400

Final-Recipient: RFC822; root@foobar.com.procmail@foobar.com
Action: failed
Status: 5.3.0
Diagnostic-Code: X-Unix; 73
{blah blah blah...)

And messages don't get delivered to users at all. I don't want to archive mail to a single user. I want the users email to be archived to their own directory and files so that they have a permanent record of mail that traversed their account.

Here is a copy of /etc/procmailrc.out:
Code:

# -----------------------------------------------------------------
# Use this directory for archiving for all users.
ARCHIVE_DIR="/Storage/Archives/Mail"
# Use this  directory for archiving for this user.
USER_ARCHIVE_DIR="$ARCHIVE_DIR/$LOGNAME@$HOST"
# Use the current time for timestamp.
DATESTAMP=`mkdir -p $USER_ARCHIVE_DIR 2>&1 >/dev/null;date +%Y.%m`
# DATESTAMP=`date +%Y.%m`
# Use this file for archiving this months emails.
SENT_ARCHIVE_FILE="$USER_ARCHIVE_DIR/$DATESTAMP-sent.email"
# -----------------------------------------------------------------
# DO NOT DELETE THIS LINE UNLESS YOU DO NOT WANT ANY EMAILS BACKED UP EVER!
# Archive all incoming mail if the $DO_ARCHIVE variable is set.
:0c
$SENT_ARCHIVE_FILE

Note that /etc/procmailrc.out is identical to /etc/procmailrc EXCEPT that all instances of sent have been changed to received and that /etc/procmailrc works just fine as is.

Here is my entire sendmail.mc file as it supposedly should work accourding to on-line documentation:

Code:

divert(-1)dnl
dnl #
dnl # This is the sendmail macro config file for m4. If you make changes to
dnl # /etc/mail/sendmail.mc, you will need to regenerate the
dnl # /etc/mail/sendmail.cf file by confirming that the sendmail-cf package is
dnl # installed and then performing a
dnl #
dnl #    make -C /etc/mail
dnl #
include(`/usr/share/sendmail-cf/m4/cf.m4')dnl
VERSIONID(`setup for Red Hat Linux')dnl
OSTYPE(`linux')dnl
dnl #
dnl # Uncomment and edit the following line if your outgoing mail needs to
dnl # be sent out through an external mail server:
dnl #
dnl define(`SMART_HOST',`smtp.your.provider')
dnl #
define(`confDEF_USER_ID',``8:12'')dnl
define(`confTRUSTED_USER', `smmsp')dnl
dnl define(`confAUTO_REBUILD')dnl
define(`confTO_CONNECT', `1m')dnl
define(`confTRY_NULL_MX_LIST',true)dnl
define(`confDONT_PROBE_INTERFACES',true)dnl
define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl
define(`ALIAS_FILE', `/etc/aliases')dnl
dnl define(`STATUS_FILE', `/etc/mail/statistics')dnl
define(`UUCP_MAILER_MAX', `2000000')dnl
define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl
define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl
define(`confAUTH_OPTIONS', `A')dnl
dnl #
dnl # The following allows relaying if the user authenticates, and disallows
dnl # plaintext authentication (PLAIN/LOGIN) on non-TLS links
dnl #
dnl define(`confAUTH_OPTIONS', `A p')dnl
dnl #
dnl # PLAIN is the preferred plaintext authentication method and used by
dnl # Mozilla Mail and Evolution, though Outlook Express and other MUAs do
dnl # use LOGIN. Other mechanisms should be used if the connection is not
dnl # guaranteed secure.
dnl #
dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl #
dnl # Rudimentary information on creating certificates for sendmail TLS:
dnl #    make -C /usr/share/ssl/certs usage
dnl #
dnl define(`confCACERT_PATH',`/usr/share/ssl/certs')
dnl define(`confCACERT',`/usr/share/ssl/certs/ca-bundle.crt')
dnl define(`confSERVER_CERT',`/usr/share/ssl/certs/sendmail.pem')
dnl define(`confSERVER_KEY',`/usr/share/ssl/certs/sendmail.pem')
dnl #
dnl # This allows sendmail to use a keyfile that is shared with OpenLDAP's
dnl # slapd, which requires the file to be readble by group ldap
dnl #
dnl define(`confDONT_BLAME_SENDMAIL',`groupreadablekeyfile')dnl
dnl #
dnl define(`confTO_QUEUEWARN', `4h')dnl
dnl define(`confTO_QUEUERETURN', `5d')dnl
dnl define(`confQUEUE_LA', `12')dnl
dnl define(`confREFUSE_LA', `18')dnl
define(`confTO_IDENT', `0')dnl
dnl FEATURE(delay_checks)dnl
FEATURE(`no_default_msa',`dnl')dnl
FEATURE(`smrsh',`/usr/sbin/smrsh')dnl
FEATURE(`mailertable',`hash -o /etc/mail/mailertable.db')dnl
FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable.db')dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(use_ct_file)dnl
dnl #
dnl # The -t option will retry delivery if e.g. the user runs over his quota.
dnl #
FEATURE(local_procmail,`',`procmail -t -Y -a $h -d $u')dnl
FEATURE(`access_db',`hash -T<TMPF> -o /etc/mail/access.db')dnl
FEATURE(`blacklist_recipients')dnl
EXPOSED_USER(`root')dnl
dnl #
dnl # The following causes sendmail to only listen on the IPv4 loopback address
dnl # 127.0.0.1 and not on any other network devices. Remove the loopback
dnl # address restriction to accept email from the internet or intranet.
dnl #
DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl
dnl #
dnl # The following causes sendmail to additionally listen to port 587 for
dnl # mail from MUAs that authenticate. Roaming users who can't reach their
dnl # preferred sendmail daemon due to port 25 being blocked or redirected find
dnl # this useful.
dnl #
dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl
dnl #
dnl # The following causes sendmail to additionally listen to port 465, but
dnl # starting immediately in TLS mode upon connecting. Port 25 or 587 followed
dnl # by STARTTLS is preferred, but roaming clients using Outlook Express can't
dnl # do STARTTLS on ports other than 25. Mozilla Mail can ONLY use STARTTLS
dnl # and doesn't support the deprecated smtps; Evolution <1.1.1 uses smtps
dnl # when SSL is enabled-- STARTTLS support is available in version 1.1.1.
dnl #
dnl # For this to work your OpenSSL certificates must be configured.
dnl #
dnl DAEMON_OPTIONS(`Port=smtps, Name=TLSMTA, M=s')dnl
dnl #
dnl # The following causes sendmail to additionally listen on the IPv6 loopback
dnl # device. Remove the loopback address restriction listen to the network.
dnl #
dnl # NOTE: binding both IPv4 and IPv6 daemon to the same port requires
dnl #      a kernel patch
dnl #
dnl DAEMON_OPTIONS(`port=smtp,Addr=::1, Name=MTA-v6, Family=inet6')dnl
dnl #
dnl # We strongly recommend not accepting unresolvable domains if you want to
dnl # protect yourself from spam. However, the laptop and users on computers
dnl # that do not have 24x7 DNS do need this.
dnl #
FEATURE(`accept_unresolvable_domains')dnl
dnl #
dnl FEATURE(`relay_based_on_MX')dnl
dnl #
dnl # Also accept email sent to "localhost.localdomain" as local email.
dnl #
LOCAL_DOMAIN(`localhost.localdomain')dnl
dnl #
dnl # The following example makes mail from this host and any additional
dnl # specified domains appear to be sent from mydomain.com
dnl #
dnl MASQUERADE_AS(`mydomain.com')dnl
dnl #
dnl # masquerade not just the headers, but the envelope as well
dnl #
dnl FEATURE(masquerade_envelope)dnl
dnl #
dnl # masquerade not just @mydomainalias.com, but @*.mydomainalias.com as well
dnl #
dnl FEATURE(masquerade_entire_domain)dnl
dnl #
dnl MASQUERADE_DOMAIN(localhost)dnl
dnl MASQUERADE_DOMAIN(localhost.localdomain)dnl
dnl MASQUERADE_DOMAIN(mydomainalias.com)dnl
dnl MASQUERADE_DOMAIN(mydomain.lan)dnl
MAILER(smtp)dnl
MAILER(procmail)dnl
LOCAL_RULE_0
R$*<@$*.procmail>$*        $1@<$2>$3        map back of procmail copy
dnl This seems to cause errors
R$*<@$+>$*        $#procmail $@/etc/procmailrc.out $:$1@$2procmail$3        send all external mail to procmail

define(`confSMTP_LOGIN_MSG',`my-mailer.$m')

CAN ANY ONE HELP ?!?!?!?!?!

:cry:

-G


All times are GMT -5. The time now is 07:01 AM.