If for some reasone you don't want to use an existing package, one thing you could do is just use a simple cgi form to do the collecting (since most people sign up when viewing a page anyway).
Something like this is pretty straight forward to code. Handling a generic list subscribe would most likely be really time consuming. Many nuances I'm sure.