Easier than I can believe.
Virtualmin->Server Configuration->Manage SSL Certificate->Signing Request
Fill in the blanks ('Server name in URL' needs the 'www' but not 'http://'), click 'Generate Now', copy the result
Log in to GoDaddy, buy a certificate credit, use the credit to request a certificate (they have instructions)
Paste in the CSR you got from clicking 'Generate Now'
They e-mail you a link to a zip file containing your cert and a chain called 'gd_intermediate_bundle.crt'
Unzip the file
Virtualmin->Server Configuration->Manage SSL Certificate->New Certificate
Upload your cert into 'Signed SSL certificate'
Virtualmin->Server Configuration->Manage SSL Certificate->CA Certificate
Upload the chain into 'CA certificate file'
Restart Apache
DovecotWebmin->Servers->Dovecot->SSL Configuration (No chain needed?)
SSL certificate file /home/YOURDOMAIN/ssl.cert
SSL private key file /home/YOURDOMAIN/ssl.key
Save, Restart Dovecot
PostfixWebmin->Servers->Postfix->SMTP Authentication
Enable TLS encryption? Yes
TLS certificate file /home/YOURDOMAIN/ssl.cert
TLS private key file /home/YOURDOMAIN/ssl.key
TLS certificate authority /home/YOURDOMAIN/ssl.ca
Save, Restart Postfix
ProFTPdThis takes just a bit more effort. It requires the chain file (now residing at /home/YOURDOMAIN/ssl.ca) and your cert together. Login to your system and
cat ssl.ca ssl.cert > ssl.chained.cert
Webmin->Servers->ProFTPD Server->Edit Config Files
(Explanation at:
http://www.castaglia.org/proftpd/modules/mod_tls.html)--------------------------------------------------------------------------------
FIND THIS SECTION (ABOUT HALF WAY DOWN):
<IfModule mod_tls.c>
TLSEngine off
</IfModule>
AND CHANGE IT TO READ:
##<IfModule mod_tls.c>
##TLSEngine off
##</IfModule>
TLSEngine on
TLSRequired on
TLSRSACertificateFile /home/YOURDOMAIN/ssl.chained.cert
TLSRSACertificateKeyFile /home/YOURDOMAIN/ssl.key
TLSCipherSuite ALL:!ADH:!DES
--------------------------------------------------------------------------------
Save, Restart ProFTPd