processone / ejabberd

Robust, Ubiquitous and Massively Scalable Messaging Platform (XMPP, MQTT, SIP Server)
https://www.process-one.net/en/ejabberd/
Other
6k stars 1.5k forks source link

mod_block_strangers catpcha option not working #4221

Open marzzzello opened 1 month ago

marzzzello commented 1 month ago

Environment

Configuration

I use a reverse proxy from xmpp.myserver.tld to ejabberd:5080.

...
listen:
  - port: 5080
    ip: '::'
    module: ejabberd_http
    tls: false
    request_handlers:
      /account: mod_register_web
      /admin: ejabberd_web_admin
      /api: mod_http_api
      /bosh: mod_bosh
      /captcha: ejabberd_captcha
      /upload: mod_http_upload
      /ws: ejabberd_http_ws
      /.well-known/host-meta: mod_host_meta
      /.well-known/host-meta.json: mod_host_meta
      /_matrix: mod_matrix_gw
...

captcha_cmd: mod_ecaptcha
captcha_url: https://xmpp.myserver.tld/captcha
captcha_limit: 5

acl:
  spamservers:
    server:
      - externalserver.tld

modules:
  mod_ecaptcha: {}
  mod_block_strangers:
    access: spamservers
    allow_transports: false
    captcha: true
    log: true
...

ejabberd.log

Expand ```log 2024-05-17 12:30:50.237030+00:00 [notice] (tls|<0.732.0>) Received XML on stream = <<" ">> 2024-05-17 12:30:50.763621+00:00 [notice] (tls|<0.2299.0>) Received XML on stream = <<"Hi, this message may contain spam">> 2024-05-17 12:30:50.763923+00:00 [debug] Running hook s2s_in_handle_recv: mod_s2s_dialback:s2s_in_recv/3 2024-05-17 12:30:50.764024+00:00 [debug] Running hook s2s_in_authenticated_packet: mod_s2s_dialback:s2s_in_packet/2 2024-05-17 12:30:50.764174+00:00 [debug] Route: #message{id = <<"c632b51f-3757-4227-81b0-d39a7d43d5bc">>,type = chat, lang = <<"en">>, from = #jid{user = <<"externaluser">>, server = <<"externalserver.tld">>, resource = <<"blabber.im[3.1.4].DYUl">>, luser = <<"externaluser">>, lserver = <<"externalserver.tld">>, lresource = <<"blabber.im[3.1.4].DYUl">>}, to = #jid{user = <<"me">>,server = <<"myserver.tld">>, resource = <<>>,luser = <<"me">>, lserver = <<"myserver.tld">>,lresource = <<>>}, subject = [], body = [#text{lang = <<>>, data = <<"Hi, this message may contain spam">>}], thread = undefined, sub_els = [#xmlel{name = <<"request">>, attrs = [{<<"xmlns">>,<<"urn:xmpp:receipts">>}], children = []}, #xmlel{name = <<"markable">>, attrs = [{<<"xmlns">>, <<"urn:xmpp:chat-markers:0">>}], children = []}, #xmlel{name = <<"origin-id">>, attrs = [{<<"xmlns">>,<<"urn:xmpp:sid:0">>}, {<<"id">>, <<"c632b51f-3757-4227-81b0-d39a7d43d5bc">>}], children = []}, #xmlel{name = <<"active">>, attrs = [{<<"xmlns">>, <<"http://jabber.org/protocol/chatstates">>}], children = []}], meta = #{ip => {64845,291,17767,35243,0,0,0,1}}} 2024-05-17 12:30:50.764455+00:00 [debug] Local route: #message{id = <<"c632b51f-3757-4227-81b0-d39a7d43d5bc">>,type = chat, lang = <<"en">>, from = #jid{user = <<"externaluser">>, server = <<"externalserver.tld">>, resource = <<"blabber.im[3.1.4].DYUl">>, luser = <<"externaluser">>, lserver = <<"externalserver.tld">>, lresource = <<"blabber.im[3.1.4].DYUl">>}, to = #jid{user = <<"me">>,server = <<"myserver.tld">>, resource = <<>>,luser = <<"me">>, lserver = <<"myserver.tld">>,lresource = <<>>}, subject = [], body = [#text{lang = <<>>, data = <<"Hi, this message may contain spam">>}], thread = undefined, sub_els = [#xmlel{name = <<"request">>, attrs = [{<<"xmlns">>,<<"urn:xmpp:receipts">>}], children = []}, #xmlel{name = <<"markable">>, attrs = [{<<"xmlns">>, <<"urn:xmpp:chat-markers:0">>}], children = []}, #xmlel{name = <<"origin-id">>, attrs = [{<<"xmlns">>,<<"urn:xmpp:sid:0">>}, {<<"id">>, <<"c632b51f-3757-4227-81b0-d39a7d43d5bc">>}], children = []}, #xmlel{name = <<"active">>, attrs = [{<<"xmlns">>, <<"http://jabber.org/protocol/chatstates">>}], children = []}], meta = #{ip => {64845,291,17767,35243,0,0,0,1}}} 2024-05-17 12:30:50.764612+00:00 [debug] Running hook sm_receive_packet: mod_mam:sm_receive_packet/1 2024-05-17 12:30:50.764792+00:00 [debug] Processing message to bare JID: #message{id = <<"c632b51f-3757-4227-81b0-d39a7d43d5bc">>,type = chat, lang = <<"en">>, from = #jid{user = <<"externaluser">>, server = <<"externalserver.tld">>, resource = <<"blabber.im[3.1.4].DYUl">>, luser = <<"externaluser">>, lserver = <<"externalserver.tld">>, lresource = <<"blabber.im[3.1.4].DYUl">>}, to = #jid{user = <<"me">>,server = <<"myserver.tld">>, resource = <<>>,luser = <<"me">>, lserver = <<"myserver.tld">>,lresource = <<>>}, subject = [], body = [#text{lang = <<>>, data = <<"Hi, this message may contain spam">>}], thread = undefined, sub_els = [#xmlel{name = <<"request">>, attrs = [{<<"xmlns">>,<<"urn:xmpp:receipts">>}], children = []}, #xmlel{name = <<"markable">>, attrs = [{<<"xmlns">>, <<"urn:xmpp:chat-markers:0">>}], children = []}, #xmlel{name = <<"origin-id">>, attrs = [{<<"xmlns">>,<<"urn:xmpp:sid:0">>}, {<<"id">>, <<"c632b51f-3757-4227-81b0-d39a7d43d5bc">>}], children = []}, #xmlel{name = <<"active">>, attrs = [{<<"xmlns">>, <<"http://jabber.org/protocol/chatstates">>}], children = []}], meta = #{ip => {64845,291,17767,35243,0,0,0,1}, stanza_id => 1715949050764649}} 2024-05-17 12:30:50.765215+00:00 [debug] Sending to process <0.842.0> 2024-05-17 12:30:50.765308+00:00 [debug] Running hook c2s_handle_info: ejabberd_sm:c2s_handle_info/2 2024-05-17 12:30:50.765381+00:00 [debug] Running hook c2s_handle_info: mod_offline:c2s_handle_info/2 2024-05-17 12:30:50.765449+00:00 [debug] Running hook c2s_handle_info: mod_pubsub:c2s_handle_info/2 2024-05-17 12:30:50.765487+00:00 [debug] Running hook c2s_handle_info: mod_push_keepalive:c2s_handle_info/2 2024-05-17 12:30:50.765524+00:00 [debug] Running hook c2s_handle_info: mod_stream_mgmt:c2s_handle_info/2 2024-05-17 12:30:50.765560+00:00 [debug] Running hook c2s_handle_info: ejabberd_c2s:process_info/2 2024-05-17 12:30:50.765596+00:00 [debug] Running hook privacy_check_packet: mod_pres_counter:check_packet/4 2024-05-17 12:30:50.765815+00:00 [debug] Running hook privacy_check_packet: mod_last:privacy_check_packet/4 2024-05-17 12:30:50.765904+00:00 [debug] Running hook privacy_check_packet: mod_privacy:check_packet/4 2024-05-17 12:30:50.765980+00:00 [debug] Running hook user_receive_packet: mod_block_strangers:filter_packet/1 2024-05-17 12:30:50.766049+00:00 [debug] Running hook roster_get_jid_info: mod_roster:get_jid_info/4 2024-05-17 12:30:50.766104+00:00 [debug] Running hook roster_get_jid_info: mod_shared_roster:get_jid_info/4 2024-05-17 12:30:50.766202+00:00 [info] Rejecting message from stranger externaluser@externalserver.tld/blabber.im[3.1.4].DYUl to me@myserver.tld 2024-05-17 12:30:50.766383+00:00 [debug] Route: #message{ id = <<"c632b51f-3757-4227-81b0-d39a7d43d5bc">>,type = error, lang = <<"en">>, from = #jid{ user = <<"me">>,server = <<"myserver.tld">>, resource = <<>>,luser = <<"me">>, lserver = <<"myserver.tld">>,lresource = <<>>}, to = #jid{ user = <<"externaluser">>,server = <<"externalserver.tld">>, resource = <<"blabber.im[3.1.4].DYUl">>, luser = <<"externaluser">>,lserver = <<"externalserver.tld">>, lresource = <<"blabber.im[3.1.4].DYUl">>}, subject = [], body = [#text{lang = <<>>,data = <<"Hi, this message may contain spam">>}], thread = undefined, sub_els = [#xmlel{ name = <<"request">>, attrs = [{<<"xmlns">>,<<"urn:xmpp:receipts">>}], children = []}, #xmlel{ name = <<"markable">>, attrs = [{<<"xmlns">>,<<"urn:xmpp:chat-markers:0">>}], children = []}, #xmlel{ name = <<"origin-id">>, attrs = [{<<"xmlns">>,<<"urn:xmpp:sid:0">>}, {<<"id">>,<<"c632b51f-3757-4227-81b0-d39a7d43d5bc">>}], children = []}, #xmlel{ name = <<"active">>, attrs = [{<<"xmlns">>,<<"http://jabber.org/protocol/chatstates">>}], children = []}, #stanza_error{ type = modify,by = undefined,reason = 'policy-violation', text = [#text{ lang = <<"en">>, data = <<"Messages from strangers are rejected">>}], sub_els = []}], meta = #{ip => {64845,291,17767,35243,0,0,0,1}, stanza_id => 1715949050764649}} 2024-05-17 12:30:50.766877+00:00 [debug] Local route: #message{ id = <<"c632b51f-3757-4227-81b0-d39a7d43d5bc">>,type = error, lang = <<"en">>, from = #jid{ user = <<"me">>,server = <<"myserver.tld">>, resource = <<>>,luser = <<"me">>, lserver = <<"myserver.tld">>,lresource = <<>>}, to = #jid{ user = <<"externaluser">>,server = <<"externalserver.tld">>, resource = <<"blabber.im[3.1.4].DYUl">>, luser = <<"externaluser">>,lserver = <<"externalserver.tld">>, lresource = <<"blabber.im[3.1.4].DYUl">>}, subject = [], body = [#text{lang = <<>>,data = <<"Hi, this message may contain spam">>}], thread = undefined, sub_els = [#xmlel{ name = <<"request">>, attrs = [{<<"xmlns">>,<<"urn:xmpp:receipts">>}], children = []}, #xmlel{ name = <<"markable">>, attrs = [{<<"xmlns">>,<<"urn:xmpp:chat-markers:0">>}], children = []}, #xmlel{ name = <<"origin-id">>, attrs = [{<<"xmlns">>,<<"urn:xmpp:sid:0">>}, {<<"id">>,<<"c632b51f-3757-4227-81b0-d39a7d43d5bc">>}], children = []}, #xmlel{ name = <<"active">>, attrs = [{<<"xmlns">>,<<"http://jabber.org/protocol/chatstates">>}], children = []}, #stanza_error{ type = modify,by = undefined,reason = 'policy-violation', text = [#text{ lang = <<"en">>, data = <<"Messages from strangers are rejected">>}], sub_els = []}], meta = #{ip => {64845,291,17767,35243,0,0,0,1}, stanza_id => 1715949050764649}} 2024-05-17 12:30:50.767171+00:00 [debug] Finding connection for {<<"myserver.tld">>,<<"externalserver.tld">>} 2024-05-17 12:30:50.767240+00:00 [debug] Using ejabberd_s2s_out <0.2326.0> 2024-05-17 12:30:50.767269+00:00 [debug] Sending to process <0.2326.0> 2024-05-17 12:30:50.767367+00:00 [notice] (tls|<0.2326.0>) Send XML on stream = <<"Messages from strangers are rejectedHi, this message may contain spam">> ```

Errors from error.log/crash.log

No errors

Bug description

I expect to receive a captcha, and after I solve it, I should receive the message. But I just get "delivery failed" and no captcha is shown. The log says "Rejecting message from stranger" but says nothing about captcha although the option is enabled. When using captcha.sh instead of mod_ecaptcha the same bug appears.

Neustradamus commented 4 weeks ago

@marzzzello: Have you tested the captcha-ng.sh instead of captcha.sh?

Other links:

marzzzello commented 1 week ago

@Neustradamus I tested mod_ecaptcha and captcha.sh. Same result, so I guess it's not a captcha issue. I didn't test captcha-ng.sh because it seems to be quite similar to captcha.sh