|
|
|
@ -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); |
|
|
|
|