Ich glaube doch, schon. Ein kompaktes Modul mit klar umrissener Funktionalität. Kein GUI, keine Applikationsschicht, nur der reine SMTP-Client als wiederverwendbares Modul.
Im Leben nicht. Der RFC hat schon knapp 100 Seiten, den müsste man erstmal lesen und technische Spezifikationen lesen sich nicht so schnell wie Romane. Und allein die Spezifikation wird nicht reichen, um alle Details zu verstehen, wenn man Glück hat gibt es eine Referenz-Implementierung in einer Programmiersprache, die man versteht. Dann muss man recherchieren, ob es Defacto-Standards gibt, die für den Produktiv-Betrieb unerlässlich sind, die aber nicht Teil der offiziellen Spezifikation sind. Dann muss man sich eine Architektur überlegen. Hat man Vorerfahrung mit der Implementierung von Netzwerk-Protokellen fällt das relativ leicht. Ohne Vorerfahrung dauert es länger und benötigt mehr Iterationen bis man bei einem sinnvollen Entwurf angelangt ist. Dann richtet man sich eine lokale Entwicklungsumgebung ein. Dann kann man anfangen Tests zu schreiben, für jedes MUST in der Spezifikation sollte es mindestens einen Test geben. Dann kann man anfangen zu implementieren. Spätestens hier fallen dann unzählige Details auf, die man nicht berücksichtigt hat. Zurück ans Zeichenbrett. Refaktorisieren. Tests anpassen. Weiter implementieren. Nach nochmal unzähligen Iterationen hat man einen funktionierenden Prototypen. Jetzt kann man anfangen Integrations-Tests zu schreiben. Das wird mühsam, aber irgendwann hat man vielleicht so etwas wie einen Release-Candidate. Hat man Glück, dann dann hat man Kollegen, die Code-Reviews schreiben oder sogar Tester, die einem helfen Bugs aufzudecken. Dann kan man die Library debuggen. Wenn dann wirklich mal eine erste Version existiert, dann muss man sich übers Deployment Gedanken machen. Wenn das kein Wegwerf-Skript werden soll, dann muss man sich über CI-Pipelines Gedanken machen. Wenn man Glück hat, gibt es eine DevOps-Abteilung, die das übernimmt.
Das war jetzt nur aus dem Gedächtnis, ich habe wahrscheinlich jede Menge Kram vergessen. Wenn ich den Auftrag aufbekäme, einen SMTP-Client zu programmieren, würde ich mir schon mindestens einen Tag Zeit nehmen, um den Entwicklungs-Prozess zu planen, Aufwände abzuschätzen, Features zu priorisieren. Aber vermutlich würde ich dem Kunden gleich davon abraten und zu einer bereits erprobten Implementierung raten, die den Test der Zeit bereits bewältigt hat und starken Community-Support erfährt.