While the response by @arheops didn't work, it was certainly helpful in pointing me in the right direction.
The phone pretty much sends the MESSAGE
without any content, and not even Content-Type.
<--- SIP read from UDP:<Phone External IP>:5060 --->
MESSAGE sip:1014@<Server Internal IP>:5060;user=phone SIP/2.0
Via: SIP/2.0/UDP <Phone Internal IP>:5060;branch=z9hG4bK2621781087c1096064fa949
From: "1014" <sip:1014@<Server Internal IP>:5060;user=phone>;tag=2621781087c1096064fa949;fjline-hunt=ML-141
To: <sip:1014@<Server Internal IP>:5060;user=phone>
CSeq: 1 MESSAGE
Call-ID: 00062621781087c1096064fa94900@<Phone Internal IP>
Content-Length: 0
Max-Forwards: 70
User-Agent: Fujitsu SS-170A/B/C V02L001C06
<------------->
--- (9 headers 0 lines) ---
In the end I found this question: Asterisk incoming message gives: 415 unsupported media type
Which states that without a content-type of text/plain, Asterisk refuses a Message right away.
Of course the proper way would be to indeed clone Asterisk and rebuild it from source, but considering the time limit (and laziness) I just used Hopper to find the offset to the string literal after "text/plain", and just make it respond with a 200 OK
(bunch of spaces at the end).
And now I can easily call anyone from this phone!
Incoming calls, however, don't work: it responds with an OK to a Notify, but does nothing, and Asterisk redirects the call to voicemail.
And I can't check voicemail either, because it won't send DTMF inband or out of band.
To cut a long story short: don't buy a SIP phone on a shady used electronics sale just because it's cheap and looks cool, vendor-specific protocols can be a PITA.