Fool that I am, I just realized the obvious: Check the web logs.
I looked at indico.log. I found these lines, which represent my most recent attempt to test this problem:
2025-04-22 04:47:27,946 INFO 0c09c2f02cae4f62 - indico.rh GET /login/ [IP=10.44.47.2] [PID=76645]
2025-04-22 04:47:31,574 INFO 8afedd12ef1349a2 - indico.rh GET /register/ [IP=10.44.47.2] [PID=76749]
2025-04-22 04:47:31,861 INFO 25e0e45ea2584924 - indico.rh GET /api/captcha/generate [IP=10.44.47.2] [PID=76751]
2025-04-22 04:47:46,202 INFO c535c665f79b4a22 - indico.rh POST /register/ [IP=10.44.47.2] [PID=76751]
2025-04-22 04:47:46,259 INFO f4aa8b6667da41db - indico.rh GET /register/ [IP=10.44.47.2] [PID=76749]
2025-04-22 04:47:47,238 INFO 0000000000000000 - indico.emails Sent email "[Indico] Verify your email"
2025-04-22 04:54:14,159 INFO 8d7067b5bb3c4551 - indico.rh GET /register/?token=<token> [IP=10.44.47.2] [PID=76751]
2025-04-22 04:54:14,185 INFO eb8a4fc2eecb41cc - indico.rh GET /register/ [IP=10.44.47.2] [PID=76751]
2025-04-22 04:54:14,533 INFO 5c3e691ab805434b - indico.rh GET /api/captcha/generate [IP=10.44.47.2] [PID=76749]
2025-04-22 04:59:53,859 INFO 07dc6d884c3f4843 - indico.rh GET /register/?token=<token> [IP=10.44.47.2] [PID=76751]
2025-04-22 04:59:53,883 INFO f4282ba279a04144 - indico.rh GET /register/ [IP=10.44.47.2] [PID=76751]
Here’s how I think it breaks down:
- At 04:47 I visit the Indico login page, and click on
create one here. I fill in the captcha, and Indico sends the verification email.
- At 04:54, I click on the verification link in the browser. That takes me to the captcha page again.
- At 04:59, I click on the link within my email client. There’s nothing more recorded in
indico.log, but I’m taken to the page that asks me to enter account information.
The key point here is that <token> is identical at 04:54 and 04:59. I again confirmed this with diff.
Next I looked at apache/access.log. The two access attempts don’t quite leave the same messages (a blend of HTTPD 200 and 304 codes), but I was able to confirm that <token> was the same in the apache log as it was in the indico log.
The initial key difference between how the Indico web server responds is:
For the access via the browser:
10.44.47.2 - - [22/Apr/2025:04:54:14 -0400] "GET /assets/i18n/en_US.js HTTP/1.1" 304 - "https://<servername>/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:137.0) Gecko/20100101 Firefox/137.0"
Assuming I understand the HTTP status codes correctly, for the browser access of en_US.js the apache server returns 304, “resource has not been modified since the version specified by the request headers”.
For the email client access:
10.44.47.2 - - [22/Apr/2025:04:59:53 -0400] "GET /assets/i18n/en_US.js HTTP/1.1" 200 73 "https://<servername>/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:137.0) Gecko/20100101 Firefox/137.0"
10.44.47.2 - - [22/Apr/2025:04:59:53 -0400] "GET /assets/i18n/en_US-react.js HTTP/1.1" 304 - "https://<servername>/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:137.0) Gecko/20100101 Firefox/137.0"
For the mail client access, for en_US.js apache returns 200 “Standard response for successful HTTP requests”. After a request for en_US.js, there’s a subsequent request for en_US-react.js which is not performed for the browser access.
All of which tells me nothing, except that I don’t see a difference in the tokens themselves or why Indico would respond differently to the HTTPD requests. If I believe the names, en_US.js suggests a localization of some sort. It doesn’t looking like a smoking gun to me.
Does any of this suggest anything to you?