40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
///
/// The configuration file must use owner-only permissions. Once configured,
/// the SMTP server runs until it stops or encounters an error.
///
/// # Errors
/// Returns an error if the configuration file is missing, inaccessible,
/// insecure, malformed, or contains invalid required settings.
///
/// # Panics
/// Panics if configuring or serving the SMTP server fails.
async fn main (ex: &LocalExecutor<'_>) -> Result<()> {
let args = Args::parse();
let config_file = Path::new(&args.config);
if !config_file.try_exists().stack()? {
|
>
>
|
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
///
/// The configuration file must use owner-only permissions. Once configured,
/// the SMTP server runs until it stops or encounters an error.
///
/// # Errors
/// Returns an error if the configuration file is missing, inaccessible,
/// insecure, malformed, or contains invalid required settings.
/// Also returns an error if the system hostname cannot be read or is not
/// valid UTF-8, or if mail server initialisation fails.
///
/// # Panics
/// Panics if configuring or serving the SMTP server fails.
async fn main (ex: &LocalExecutor<'_>) -> Result<()> {
let args = Args::parse();
let config_file = Path::new(&args.config);
if !config_file.try_exists().stack()? {
|