A classic sendmail failure from the 1990s, still visible in contemporary logs.
*An obscure 550 error from the 1990s still surfaces in modern Unix logs. The message blends case‑sensitivity bugs, legacy system calls, and a relic of typewriter‑era terminology.*
A cryptic 550 response still haunts Unix admins: "User unknown: Not a typewriter." First seen in the 1990s, the error appears when sendmail mishandles capitalized usernames. The message is a perfect storm of legacy assumptions, a meta‑error routine, and a relic of typewriter‑era terminology. Understanding why it persists reveals how ancient design choices echo through modern infrastructure.
In the 1990s sendmail assumed all user names were lowercase. When a user typed "MWichary", the software silently lowercased it to "mwichary"—a non‑existent account. Sendmail then reported "User unknown" and appended the system error value. That value was ENOTTY, rendered as the terse string "Not a typewriter". ENOTTY signals a program running without a terminal, not an actual hardware fault. The colon joining the two messages made it read as if the user were a typewriter, a grammatical quirk that stuck for decades.
Sendmail's lowercasing logic was correct for early Unix setups where usernames were always lowercase. The mismatch appeared only when a capitalized name like "MWichary" was used. The conversion to "mwichary" produced a lookup failure, which the mail daemon reported as "User unknown". The subsequent ENOTTY string was unrelated to the missing account but was automatically concatenated, creating the confusing "User unknown: Not a typewriter" output.
ENOTTY remains the error code for "Inappropriate ioctl for device" in contemporary Unix and Linux kernels. Modern systems replace the literal "Not a typewriter" with the clearer phrase "Inappropriate ioctl for device", but the underlying numeric code ENOTTY is unchanged. The legacy string persists in source code, meaning the error could reappear if developers expose the raw code value.
The error message originated from a Solaris manual entry, and its code survives in the kernel. Even after typewriters, teletype terminals, and console apps vanished, the ENOTTY constant stayed. Unless a future OS removes the constant or rewrites its error‑handling layer, the historic phrasing could reappear in logs, outliving the hardware it once described.
Sendmail lowercased a capitalized username, failed to find the account, reported "User unknown", and appended the ENOTTY system error, which rendered as "Not a typewriter".
ENOTTY is the error code for "Inappropriate ioctl for device", replacing the older "Not a typewriter" phrasing.
The literal string has been replaced by "Inappropriate ioctl for device", but the ENOTTY code remains in the kernel, so the underlying condition can still appear.
The sendmail glitch is a reminder that code carries its history forward. A single case‑conversion rule, an unchanged ENOTTY constant, and a dated error string combine to produce a message that confounds even seasoned engineers. As systems evolve, the lesson is clear: legacy error handling must be audited, or archaic phrases will continue to surface, obscuring the real problem behind nostalgic jargon.
Sources: [Hacker News – Traditional, but puzzling (https://unsung.aresluna.org/traditional-but-puzzling/)]