diff --git a/src/bogofilter-smtpd.cpp b/src/bogofilter-smtpd.cpp index dc7d4de..1c277a6 100644 --- a/src/bogofilter-smtpd.cpp +++ b/src/bogofilter-smtpd.cpp @@ -64,7 +64,6 @@ void on_data_line(protocol::protocol_t& protocol, protocol::message_t message) { } if(data_line == ".") { - protocol.submit_message(session_key, session_token, session.message.header, session.message.body); FILE* f = popen("bogofilter -v 1>&2", "w"); for(string& line : session.message.header) { fprintf(f, "%s\n", line.c_str()); @@ -76,6 +75,12 @@ void on_data_line(protocol::protocol_t& protocol, protocol::message_t message) { int status = pclose(f); session.status = WEXITSTATUS(status); + if(session.status == 0) { + session.message.header.push_back("X-Spam: Yes"); + } + + protocol.submit_message(session_key, session_token, session.message.header, session.message.body); + return; } @@ -97,10 +102,11 @@ void on_commit(protocol::protocol_t& protocol, protocol::message_t message) { auto session_token = protocol::session_token_from(message); try { auto& session = sessions.at(session_key); - + /* switch(session.status) { case mail::status::SPAM: debug && cerr << "Classified as spam" << endl; + protocol.junk(session_key, session_token); break; @@ -115,6 +121,9 @@ void on_commit(protocol::protocol_t& protocol, protocol::message_t message) { protocol.fail(session_key, session_token); break; } + */ + + protocol.proceed(session_key, session_token); } catch(out_of_range& e) { cerr << "Unknown session key from SMTPD" << endl; protocol.fail(session_key, session_token);