I prefer writing procmail rules querying Return-Path instead of From.
The Return-Path header field gets faked rather rarely as opposed to the From header field, it’s far more often machine generated, that’s why I regard it more reliable.
Today I found myself in a situation, where the Return-Path header field looked differently after my usual fetchmail+procmail execution chain. I didn’t recognize that from the beginning. I tried hard for a couple of hours matching the “original” Return-Path, but I did not succeed. Only after I recognized the difference and turned my interest towards the “new” Return-Path, I immediately succeeded creating another nice procmail rule for that message resp. for messages from that sender.
I still cannot explain myself, why and how Return-Path gets changed, but now I know and respect it does.