Phantasmal MUD Lib for DGD

Phantasmal Site > DGD > Writing a Library > Outgoing Email

Sending Email From a DGD Server

See also messages about a DGD kfun to do this.

To do this, you'll either need to modify DGD to make an outgoing network connection or get another server to connect to your passive DGD server.

If you choose to modify DGD, you can either provide a sendmail-type kernel function for DGD, coded in C, or apply the network patch to DGD and write LPC code to make your server connect externally and send email. You'll need to obey the RFCs for SMTP servers, but that's pretty easy. Par Winzell recommends the following RFCs:

0876 Survey of SMTP implementations. D. Smallberg. Sep-01-1983.
1047 Duplicate messages and SMTP. C. Partridge. Feb-01-1988. (Format:
1090 SMTP on X.25. R. Ullmann. Feb-01-1989. (Format: TXT=6141 bytes)
1425 SMTP Service Extensions. J. Klensin, WG Chair, N. Freed, Editor,
1426 SMTP Service Extension for 8bit-MIMEtransport. J. Klensin, WG
1427 SMTP Service Extension for Message Size Declaration. J. Klensin,
1428 Transition of Internet Mail from Just-Send-8 to 8bit-SMTP⁄MIME.
1651 SMTP Service Extensions. Klensin, N. Freed, M. Rose, E. Stefferud
1652 SMTP Service Extension for 8bit-MIMEtransport. Klensin, N. Freed,
1653 SMTP Service Extension for Message Size Declaration. J. Klensin,
1830 SMTP Service Extensions for Transmission of Large and Binary MIME
  

No matter how you implement this functionality, be sure to restrict mail sending to highly trusted users and processes, and to add extra limits on outgoing mail. Be even more careful accepting any kind of incoming mail. It's easy for a mail-enabled server to be used as a relay for spam, or to be used to spam some poor user with many, many unwarranted random messages in his inbox.

If you implement a DGD kfun for this (ew!), be sure to check it carefully for security and functionality. It's easy to get into a long wait (freezing your MUD up) or get an error (crashing DGD) or an errant system call (doing almost anything to the host system). The Kernel Function linked at the top of this page has essentially all of those problems. Don't use it.