To set up Mozilla Thunderbird Autodiscover, you need to put the configuration file on a web server
If Thunderbird cannot find your domain in its own database, or in the autoconfig website, then it will guess mail server details by trying common names such as imap.<your domain> or mail.<your domain> to see if they work, then it will try different encryption methods and different authentication methods. So, in many cases, you do not need autoconfiguration.
If neither the autodiscover nor the guessing works, then you can still enter the server details manually, but if you have lots of users and can set up a simple website for the autodiscover, then you may want to do so to simplify things.
Full details of Thunderbird's autodiscover process are on their website here.
For the sake of these instructions, we will assume that your email address is user@example.com
Thunderbird looks for a web page called https://example.com/.well-known/autoconfig/mail/config-v1.1.xml
(Note that some web servers will, for security reasons, refuse to serve pages or directories which start with a '.' by default, so that may need some reconfiguration if it doesn't work)
The config-v1.1.xml file is described on the Mozilla Website, but here is a typical example for a small VPOP3 Enterprise installation:
To use this yourself, you could change 'vpop3.example.com' to the name/address of your own VPOP3 server, and 'example.com' to your own domain
<?xml version="1.0" encoding="UTF-8"?>
<clientConfig version="1.1">
<emailProvider id="example.com">
<domain>example.com</domain>
<displayName>Example Email</displayName>
<displayShortName>Example</displayShortName>
<incomingServer type="imap">
<hostname>vpop3.example.com</hostname>
<port>143</port>
<socketType>STARTTLS</socketType>
<authentication>password-encrypted</authentication>
<username>%EMAILLOCALPART%</username>
</incomingServer>
<incomingServer type="imap">
<hostname>vpop3.example.com</hostname>
<port>143</port>
<authentication>password-encrypted</authentication>
<username>%EMAILLOCALPART%</username>
</incomingServer>
<incomingServer type="pop3">
<hostname>vpop3.example.com</hostname>
<port>110</port>
<socketType>STARTTLS</socketType>
<authentication>password-cleartext</authentication>
<username>%EMAILLOCALPART%</username>
</incomingServer>
<incomingServer type="pop3">
<hostname>vpop3.example.com</hostname>
<port>110</port>
<authentication>password-encrypted</authentication>
<username>%EMAILLOCALPART%</username>
</incomingServer>
<outgoingServer type="smtp">
<hostname>vpop3.example.com</hostname>
<port>587</port>
<socketType>STARTTLS</socketType>
<authentication>password-encrypted</authentication>
<username>%EMAILLOCALPART%</username>
</outgoingServer>
<outgoingServer type="smtp">
<hostname>vpop3.example.com</hostname>
<port>587</port>
<authentication>password-encrypted</authentication>
<username>%EMAILLOCALPART%</username>
</outgoingServer>
<outgoingServer type="smtp">
<hostname>vpop3.example.com</hostname>
<port>25</port>
<socketType>STARTTLS</socketType>
<authentication>password-encrypted</authentication>
<username>%EMAILLOCALPART%</username>
</outgoingServer>
<outgoingServer type="smtp">
<hostname>vpop3.example.com</hostname>
<port>25</port>
<authentication>password-encrypted</authentication>
<username>%EMAILLOCALPART%</username>
</outgoingServer>
</emailProvider>
</clientConfig>