For number 2. I've used two differents methods that both worked fine (no spam on either address so far).
One was using a form that only contains the first part of the mail (what's before @). Dreamhost supports posting the result to an address at the domain the form is on.
The other was using @ instead of @ and . instead of . and so on. AND using a JavaScript that builds the address from different parts. Basically so that there is no e-mail address in the html/php code of your page. JavaScripts are run by the browser, so the resulting e-mail address is only created in the browser of the end user. Most spiders scouring the web for mail addresses don't run JavaScripts and probably don't understand @ either.
One was using a form that only contains the first part of the mail (what's before @). Dreamhost supports posting the result to an address at the domain the form is on.
The other was using @ instead of @ and . instead of . and so on. AND using a JavaScript that builds the address from different parts. Basically so that there is no e-mail address in the html/php code of your page. JavaScripts are run by the browser, so the resulting e-mail address is only created in the browser of the end user. Most spiders scouring the web for mail addresses don't run JavaScripts and probably don't understand @ either.