In following those two guides, I think Postfix should not be modifying any headers on messages that are forwarded. Is it possible for you to post a complete test message including headers showing the as-sent and as-received versions? (You will have to send the message from a different address.)

masonm, thank you for the link. The mystery solved. This is exactly what I see. Via the StackOverflow page I found good explanation of the problem: Gmail Tampers with Outgoing Email.

I think Google does it deliberately, so users who want more sophisticated e-mail options buy their Google App service, which provides MX servers.

So far my solution is not to use Gmail SMTP servers. Apparently, postfix sends e-mails just fine. There was a problem with outlook.com initially, since they rejected all mails from my IP, but after contacting them they unblocked it. GMail, Yahoo users can receive my mails just fine.

The only small irritation is that Gmail softfails forwarded e-mails because Gmail tries to verify SPF record of my server with the sender address. But it's a well known problem.

Ah, I misunderstood the problem. To a degree, it is understandable that Gmail would set the "From:" address to the authenticated account, although "Sender:" would be more correct.

As you found, Postfix is perfectly capable of delivering mail on its own. Of course, any forwarding mail server will cause SPF to fail (rewriting headers is not a sane approach). DKIM-signed mail should pass through Postfix unmolested and Gmail seems to like it. For mail originating from your system, you can always add your Linode's hostname to your SPF entry, e.g. "a:foo.example.net" or to avoid extra DNS lookups, its IP(s), e.g. "ip4:11.22.33.44" or "ip6:1111:2222:3333::4".

Yes, this is what I did. Now all my mail looks good and accepted by Google without any problems. If I see any issues with the current setup I'll invest more time in the full blown DKIM config for my host.