|
|
1.1 ! root 1: To: [email protected] ! 2: Subject: Re: Request for Mailer Scripts ! 3: Newsgroups: alt.security.pgp ! 4: In-Reply-To: <[email protected]> ! 5: Organization: Little to None ! 6: Cc: ! 7: Message-Id: <[email protected]> ! 8: Date: Tue, 2 Mar 93 23:51:30 EST (-0500) ! 9: From: [email protected] (Rob Stampfli) ! 10: ! 11: In article <[email protected]> you write: ! 12: >I am trying to collect mailer scripts for use with PGP! Basically, if ! 13: >you have written a script to integrate PGP into some mailer, mailer ! 14: >agent, mail reader, news reader, or anything like that, please send me ! 15: >a copy of the script, any documentation you may have, and instructions ! 16: >for use. ! 17: ! 18: Here is a shellscript that I use with the "mailx" mailer to send encrypted ! 19: messages under Unix. Basically, to use this script, I have the following ! 20: command in my .mailrc file: "set sendmail=/the/full/path/name/to/this/script" ! 21: This has the effect of causing mailx to invoke the script, rather then ! 22: /bin/mail as the Unix mailer. In this respect, it can be used by any mailer ! 23: that can be made to pass off the to-be-mailed message to a script rather ! 24: than the /bin/mail program. The script is written for the Korn Shell, ! 25: although it would be fairly trivial to modify it to work with the standard ! 26: Bourne Shell. It looks for two special mail "addresses": ! 27: enc=pgp_identifier ! 28: sig=pgp_identifier ! 29: The first form "enc=pgp_identifier" or "encrypt=pgp_identifier" specifies ! 30: that the pgp public key uniquely identified by <pgp_identifier> be used to ! 31: encrypt the message. The second "sig=pgp_identifier" specifies that the ! 32: secret key identified by <pgp_identifier> be used to sign the message. ! 33: Either or both can be used. If enc is given, the message is encrypted, ! 34: optionally signed, ascii armored and delivered to the real mailer for ! 35: distribution. If only sig is given, the message is signed in +clearsig ! 36: mode and the result passed on. In any case, the header is exempt from ! 37: the process and is passed on intact. ! 38: ! 39: To send an encrypted message, address the mail to both the recipient and ! 40: the mail address "enc=pgp_identifier". Ditto to sign a message. Mailx ! 41: allows use of a "bcc: " field (Blind copy-to), so the enc= or sig= can ! 42: be optionally specified there. ! 43: ! 44: There are a few gotchas: Since pgp grabs the first key that matches ! 45: the pgp_identifier, you can encrypt to the wrong key if you specify ! 46: pgp_identifier too loosely. Also, if you break out of the script, it ! 47: delivers a null message. ! 48: ! 49: Without further ado, here is the script: ! 50: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ! 51: #!/bin/ksh ! 52: # This script is invoked by adding the line "set sendmail=pgpmail" to your ! 53: # .mailrc file. mailx then invokes pgpmail instead of /bin/mail to deliver ! 54: # email. This script checks whether encryption, a signature, or both are ! 55: # specified, and automatically performs whatever is required. ! 56: # ! 57: # Modified 6-Mar-93 by [email protected] to include multiple recipients ! 58: # ! 59: ! 60: trap "" 1 2 3 # req'd since this can run in bg ! 61: exec 2>/dev/tty # can be "exec 2>/dev/null" ! 62: ! 63: nl="" en="" sg="" ! 64: for i # for each argument... ! 65: do ! 66: case "$i" in # look for encryption specifier... ! 67: # Unclear this will work ! 68: # *encrypt=*) en="`sed 's/.*=//'`" # this line req'd if SHELL=sh ! 69: *encrypt=*) en="$en ${i#*=}";; # this line is faster if SHELL=ksh ! 70: *enc=*) en="$en ${i#*=}";; # this line is faster if SHELL=ksh ! 71: *sig=*) sg="${i#*=}";; # a pgp signature specification... ! 72: *) nl="$nl $i";; # a real mail address... ! 73: esac ! 74: done ! 75: ! 76: [ X = "X$en" -a X = "X$sg" ] && exec /bin/rmail "$@" # not a pgp request ! 77: ! 78: [ Xy = "X$sg" -o Xyes = "X$sg" ] && sg="Robert E. Stampfli" # just for me... ! 79: ! 80: # If we get here, encryption or sig *was* specified: ! 81: ( ! 82: OIFS="$IFS" # needed to preserve tabs in header ! 83: IFS=' ! 84: ' ! 85: while read x # read and process header intact ! 86: do ! 87: print - "$x" # ksh only -- for sh, use echo ! 88: [ X = "X$x" ] && break ! 89: done ! 90: IFS="$OIFS" # reset field separators ! 91: if [ X = "X$sg" ]; then # no signature specified: ! 92: pgp -feat "$en" # encrypt the message... ! 93: elif [ X = "X$en" ]; then # no encrypt specified: ! 94: sed -e 's/^From />From /' | # pre-convert mail glitcher... ! 95: pgp -fast +clearsig=on -u "$sg" # sign msg in MIC-CLEAR mode... ! 96: else # both encrypt and sig specified: ! 97: pgp -feast "$en" -u "$sg" # encrypt and sign armored... ! 98: fi ! 99: echo "Encryption phase completed" 1>&2 ! 100: ) | /bin/rmail $nl ! 101: ! 102: -- ! 103: Rob Stampfli [email protected] The neat thing about standards: ! 104: 614-864-9377 HAM RADIO: [email protected] There are so many to choose from.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.