about summary refs log tree commit diff
path: root/mcom
diff options
context:
space:
mode:
authorLeah Neukirchen <leah@vuxu.org>2020-05-23 16:00:06 +0200
committerLeah Neukirchen <leah@vuxu.org>2020-05-23 16:00:06 +0200
commit282de65079f2a5438df3632d1811219250ee18b8 (patch)
treec96e97368b5b660e4f6bf642674a34d840eebf07 /mcom
parent3ea0c9c35588464c9a529a727ba281325b08e6fa (diff)
downloadmblaze-282de65079f2a5438df3632d1811219250ee18b8.tar.gz
mblaze-282de65079f2a5438df3632d1811219250ee18b8.tar.xz
mblaze-282de65079f2a5438df3632d1811219250ee18b8.zip
mrep: use Reply-From configuration to find From header
This allows replying from different addresses than Local-Mailbox
if they appear in To, Cc or Bcc.

Idea and initial patch by @nmeum.
Diffstat (limited to 'mcom')
-rwxr-xr-xmcom13
1 files changed, 11 insertions, 2 deletions
diff --git a/mcom b/mcom
index 205a1ce..693d5c4 100755
--- a/mcom
+++ b/mcom
@@ -15,6 +15,12 @@ notmine() {
 	grep -Fv -e "$mine"
 }
 
+replyfrom() {
+	addrs="$(maddr -a -h reply-from: "$MBLAZE/profile")"
+	[ -z "$addrs" ] && addrs="$(maddr -a -h alternate-mailboxes: "$MBLAZE/profile")"
+	grep -F -e "$addrs"
+}
+
 ouniq() {
 	awk '!seen[$0]++'
 }
@@ -358,8 +364,11 @@ fi
 		printf 'Subject: Re: %s\n' "$(COLUMNS=10000 mscan -f '%S' "$1")"
 		if ! printf '%s\n' "$hdrs" | awk '{ print }' |
 		     mhdr -h from: /dev/stdin >/dev/null; then
-			from=$(mhdr -h local-mailbox "$MBLAZE/profile")
-			[ "$from" ] && printf 'From: %s\n' "$from"
+			addr=$(maddr -a -h to:cc:bcc: "$1" | replyfrom | head -n1)
+			[ -n "$addr" ] && from=$(maddr -h reply-from "$MBLAZE/profile" | grep -Fi "<$addr>" | head -n1)
+			[ -n "$addr" ] && [ -z "$from" ] && from=$(maddr -h alternate-mailboxes "$MBLAZE/profile" | grep -Fi "<$addr>" | head -n1)
+			[ -z "$from" ] && from=$(mhdr -h local-mailbox "$MBLAZE/profile")
+			[ -n "$from" ] && printf 'From: %s\n' "$from"
 		fi
 		mid=$(mhdr -h message-id "$1")
 		if [ "$mid" ]; then