つづき

Minimal Erlang SMTP, POP3 server code - Oliver Wyman Labs: Technical
のソース。

% darcs get http://www.lshift.net/~tonyg/erlang-smtp/
Copying patch 14 of 14... done.
Applying patch 14 of 14... done.
Finished getting.
% cd erlang-smtp
% make
erlc -I include -o ebin -Wall +debug_info  src/generic_tcp_server.erl
erlc -I include -o ebin -Wall +debug_info  src/pop3_server.erl
erlc -I include -o ebin -Wall +debug_info  src/pop3_server_session.erl
erlc -I include -o ebin -Wall +debug_info  src/rfc2822.erl
erlc -I include -o ebin -Wall +debug_info  src/smtp_server.erl
erlc -I include -o ebin -Wall +debug_info  src/smtp_server_session.erl
src/smtp_server_session.erl:48: Warning: function reply_multi/3 is unused
erlc -I include -o ebin -Wall +debug_info  src/smtp_util.erl
% cd ebin;ls
generic_tcp_server.beam  pop3_server.app  pop3_server.beam  pop3_server_session.beam  rfc2822.beam  smtp_server.app  smtp_server.beam  smtp_server_session.beam  smtp_util.beam
% erl
Eshell V5.6.2  (abort with ^G)
1> smtp_server:start().
ok

で、
erlang-smtp/ebin/smtp_server.app

{application,smtp_server,
 [{description,"SMTP Server"},
  {vsn, "0.0"},
  {modules,[
	    generic_tcp_server,
	    smtp_server,
	    smtp_server_session
	   ]},
  {applications,[kernel,stdlib]},
  {mod, {smtp_server, []}},
  {env, [{listen_host, "0.0.0.0"},
	 {listen_port, 8025}]}
 ]}.

と書いてあるので、ポートは8025

hokari% telnet localhost 8025
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 Hi there
EHLO
250 bogus.smtp.server.domain You have reached an SMTP service

thunderbirdで外のアドレスへのメールを送信できた。
ここのソースをみると作りかけなかんじ。

handle_command("EHLO", _ClientDomain, State) ->
    ServerDomain = "bogus.smtp.server.domain", %% FIXME
    {noreply, reply(250, ServerDomain ++ " You have reached an SMTP service",
		    reset_buffers(State))};