TSI(5)
π TSI β the Transmission Subscriber Identification (TSI) access control list π
okay bestie, pull up a chair, because this is the file that decides who gets to send you a fax and who gets politely ghosted. it's the tsi page from section 5 (File Formats Manual) and honestly? it's giving bouncer-at-the-club energy. π
β¨ DESCRIPTION β¨
So there's this HylaFAX config parameter called QualifyTSI, and it's the one calling the shots here. It says whether or not we should check the identity of a calling facsimile machine against an access control list before we receive the facsimile. Like, we're checking IDs at the door. πͺͺ
If QualifyTSI is non-null, then only messages from facsimile machines that are identified in the file specified by that string get accepted β and that file is typically etc/tsi.
Patterns go in one per line, and they have to conform to the regular expression syntax specified by POSIX 1003.2 β go peek at re_format(7) for the receipts. π
Comments? Yes bestie, you can have comments. They start with the `#` character and run all the way to the end of the line. And any trailing white space on a line is ignored β which is super convenient when you're using comments.
Now here's the part that actually matters. π
If a line begins with `!`, then that regular expression is identifying clients that should be rejected. Otherwise, the regular expression is identifying clients whose transmissions should be accepted.
Order matters, fr fr. Do not skip this part.
The order of patterns in a TSI file is important. When a facsimile is to be received, the fax server compares the client's TSI against the patterns in the access control list in the order in which they appear in the file. The first pattern that matches the client TSI is the one used to decide whether to accept or reject the facsimile. First match wins, no takebacks. π
And if no patterns match the client TSI? Then the facsimile is rejected. Bye. π
So if you want to accept all but a restricted set of TSI, the last line in the file should literally be:
^.*$
That's the "everyone else come on in" line. π
π¦ a lil note on writing your patterns π¦
Regular expression patterns should be written to match a TSI exactly. That means patterns should be of the form:
^<pattern>$
where the `^` and `$` characters specify the start and the end of the matching TSI. Yes, both. Every time. π€
Additionally, regular expression patterns should handle white space that may appear in known locations. For example, this pattern:
^([+]1){1}[ .-]*415[ .-]*555[ .-]*1212.*$
matches all of these TSI strings:
+1.415.555.1212
415 555 1212
1-415-555-1212
Look at her go. π«Ά
And finally β the actual slay β regular expressions can be used to specify many TSI with one pattern. Efficiency queen. π
π NOTES π
ngl, it would be nice if the TSI that were to be matched against were placed in some canonical form (e.g. remove white space and white space-like characters). That would be the dream. β¨
But it's, however, problematic β because some facsimile machines permit any printable ASCII string to be sent as a TSI. So we can't just assume things. Chaos reigns, bestie. π
π SEE ALSO π
and that's the whole vibe β this page is dated December 5, 1994, so it's a certified vintage icon, and it came to you from the File Formats Manual. ty for coming to my ted talk, go gatekeep your fax line responsibly πβ¨π
π¦ where this page comes from
- debian bookworm: hylafax-server 3:6.0.7-5
- debian trixie: hylafax-server 3:6.0.7-11.1
- ubuntu jammy: hylafax-server 3:6.0.7-3.1
- ubuntu noble: hylafax-server 3:6.0.7-7
- ubuntu questing: hylafax-server 3:6.0.7-13
- ubuntu resolute: hylafax-server 3:6.0.7-13build1
- ubuntu stonking: hylafax-server 3:6.0.7-13build1
- Copyright (c) 1990-1996 Sam Leffler
- Copyright (c) 1991-1996 Silicon Graphics, Inc
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms