### Example Swaks Configuration File Source: https://github.com/jetmore/swaks/blob/develop/RELEASE/doc/ref.txt This example shows how to set the sender address and customize the 'From' header in a Swaks configuration file. Lines starting with '#' are comments. Options can be specified with or without leading dashes. ```text # always use this sender, no matter server or logged in user --from fred@example.com # I prefer my test emails have a pretty from header. Note # the lack of dashes on option and lack of quotes around # entire argument. h-From: "Fred Example" ``` -------------------------------- ### Install and Upgrade Postfix Source: https://github.com/jetmore/swaks/blob/develop/testing/mta/postfix-config/_NOTES/install-notes.txt Commands for performing the initial installation and subsequent upgrades of Postfix after building from source. ```bash # first install: sudo make install # subsequent installs: sudo make upgrade ``` -------------------------------- ### Install Swaks on NetBSD Source: https://github.com/jetmore/swaks/blob/develop/doc/installation.html Install Swaks on NetBSD systems using the pkg_add command. ```bash pkg_add swaks ``` -------------------------------- ### SWAKS Socket Option Examples Source: https://github.com/jetmore/swaks/blob/develop/testing/regressions/_options-transport/test.txt Provides examples of using the --socket option with command line arguments, including valid and invalid configurations. ```bash --socket ``` ```bash --socket socket, command line, valid arg ``` ```bash --socket socket, command line, valid arg (--option=) ``` ```bash --socket socket command line, no arg (-option) ``` ```bash --socket socket, command line, valid arg (-option=) ``` -------------------------------- ### Swaks Support Output Example Source: https://github.com/jetmore/swaks/blob/develop/doc/README-template.txt This is an example of the output you might see when running 'swaks --support'. It details the availability of various authentication methods, transport protocols, and other features. ```text === AUTH CRAM-MD5 supported === AUTH CRAM-SHA1 supported === AUTH DIGEST-MD5 supported *** AUTH NTLM not available: requires Authen::NTLM === Basic AUTH supported === Date Manipulation supported === High Resolution Timing supported === IPv4/v6 Socket Transport supported === Legacy IPv4 Socket Transport supported === Legacy IPv4/v6 Socket Transport supported === Local Hostname Detection supported === MX Routing supported === Netrc Credentials supported === Pipe Transport supported === TLS supported === UNIX Socket Transport supported ``` -------------------------------- ### SWAKS Pipe Option Examples Source: https://github.com/jetmore/swaks/blob/develop/testing/regressions/_options-transport/test.txt Provides examples of using the --pipe option with command line arguments, including valid and invalid configurations. ```bash --pipe ``` ```bash --pipe pipe, command line, valid arg ``` ```bash --pipe pipe command line, no arg (-option) ``` ```bash --pipe pipe, command line, valid arg (-option=) ``` ```bash --pipe pipe, command line, valid arg (--option=) ``` -------------------------------- ### Install Swaks on FreeBSD Source: https://github.com/jetmore/swaks/blob/develop/doc/installation.html Install Swaks on FreeBSD systems using the pkg package manager. ```bash pkg install swaks ``` -------------------------------- ### Example XCLIENT Command with Delimiter Source: https://github.com/jetmore/swaks/blob/develop/RELEASE/doc/ref.txt This example shows how to use the --xclient-delim option to send multiple XCLIENT calls. Swaks will send 'XCLIENT HELO=helo+20string' and 'XCLIENT NAME=foo.example.com ADDR=192.168.1.1'. ```bash swaks --xclient-helo 'helo string' --xclient-delim --xclient-name foo.example.com --xclient-addr 192.168.1.1 ``` -------------------------------- ### SWAKS Test Script Setup and Execution Source: https://github.com/jetmore/swaks/blob/develop/testing/regressions/etc/format.txt This script block outlines the setup and execution steps for a SWAKS test. It includes removing existing files, creating reference files, running the SWAKS command, munging output files, and comparing results. ```bash REMOVE_FILE %OUTDIR%/%TESTID%.stdout REMOVE_FILE %OUTDIR%/%TESTID%.stderr REMOVE_FILE %OUTDIR%/%TESTID%.out ``` ```bash CREATE_FILE %REFDIR%/%TESTID%.stdout CREATE_FILE %REFDIR%/%TESTID%.stderr CREATE_FILE %REFDIR%/%TESTID%.out ``` ```bash CMD %SWAKS% --dump DATA --to user@host1.nodns.test.swaks.net --from recip@host1.nodns.test.swaks.net --server ser.ver --output-file %OUTDIR%/%TESTID%.out \ --config %TESTDIR%/swaksrc-config-1 ``` ```bash MUNGE file:%OUTDIR%/%TESTID%.stdout munge_standard MUNGE file:%OUTDIR%/%TESTID%.stderr munge_standard MUNGE file:%OUTDIR%/%TESTID%.out munge_standard ``` ```bash COMPARE_FILE %REFDIR%/%TESTID%.stdout %OUTDIR%/%TESTID%.stdout COMPARE_FILE %REFDIR%/%TESTID%.stderr %OUTDIR%/%TESTID%.stderr COMPARE_FILE %REFDIR%/%TESTID%.out %OUTDIR%/%TESTID%.out ``` -------------------------------- ### Install m4 on Debian Source: https://github.com/jetmore/swaks/blob/develop/testing/mta/postfix-config/_NOTES/install-notes.txt Installs the m4 preprocessor, a dependency for building Postfix from source. ```bash sudo apt-get install m4 ``` -------------------------------- ### Example XCLIENT Command with Attributes Source: https://github.com/jetmore/swaks/blob/develop/RELEASE/doc/ref.txt This example demonstrates how to send XCLIENT attributes for name and address. Swaks will send the SMTP command 'XCLIENT NAME=foo.example.com ADDR=192.168.1.1'. ```bash swaks --xclient-name foo.example.com --xclient-addr 192.168.1.1 ``` -------------------------------- ### SWAKS Proxy Command Example Source: https://github.com/jetmore/swaks/blob/develop/testing/regressions/_options-auth/test.txt Example of using SWAKS with various proxy options, including --proxy-family, --proxy-source, --proxy-source-port, --proxy-dest, --proxy-dest-port, and --proxy-version. ```bash # \ # -s '%SWAKS% --dump PROXY --to user@host1.nodns.test.swaks.net --from recip@host1.nodns.test.swaks.net --server "ser ver" --proxy-family AF_UNIX --proxy-source 9.9.9.9 --proxy-source-port 9999 --proxy-dest 8.8.8.8 --proxy-dest-port 8888 --proxy-version 2' ``` -------------------------------- ### Example Mixing Specific and Free-Form XCLIENT Source: https://github.com/jetmore/swaks/blob/develop/RELEASE/doc/ref.txt This example demonstrates mixing specific XCLIENT options with the free-form --xclient option. Swaks will send 'XCLIENT ADDR=192.168.0.1 PORT=26' and 'XCLIENT FOO=bar NAME=wind'. ```bash swaks --xclient-addr 192.168.0.1 --xclient-port 26 --xclient 'FOO=bar NAME=wind' ``` -------------------------------- ### Install Swaks on Fedora Source: https://github.com/jetmore/swaks/blob/develop/doc/installation.html Install Swaks on Fedora systems using the dnf package manager. ```bash sudo dnf install swaks ``` -------------------------------- ### Install Swaks using Homebrew (macOS) Source: https://github.com/jetmore/swaks/blob/develop/doc/installation.html Install Swaks on macOS using the Homebrew package manager. ```bash brew install swaks ``` -------------------------------- ### Example Free-Form XCLIENT Command Source: https://github.com/jetmore/swaks/blob/develop/RELEASE/doc/ref.txt This example uses the --xclient option to send a verbatim XCLIENT command string. Swaks will send the SMTP command 'XCLIENT NAME= ADDR=192.168.1.1 FOO=bar'. ```bash swaks --xclient 'NAME= ADDR=192.168.1.1 FOO=bar' ``` -------------------------------- ### SWAKS Pipe Command Line Example Source: https://github.com/jetmore/swaks/blob/develop/testing/regressions/_options-transport/test.txt Demonstrates the usage of the SWAKS command with pipe-related options for testing transport functionality. ```bash ./gen-tests.pl \ -n 650 \ -o pipe \ -v /path/to/command \ -i '' \ -p 'Pipe:' \ -d . \ -r \ -s '%SWAKS% --dump TRANSPORT --to user@host1.nodns.test.swaks.net --from recip@host1.nodns.test.swaks.net' ``` -------------------------------- ### Proxy Protocol v1, Proxy Header Example Source: https://github.com/jetmore/swaks/blob/develop/testing/regressions/_options-proxy/test.txt Demonstrates the format for a v1 proxy protocol with a proxy header. ```text PROXY TCP4 1.1.1.1 2.2.2.2 1 2 ``` -------------------------------- ### Install Swaks on Debian/Ubuntu Source: https://github.com/jetmore/swaks/blob/develop/doc/installation.html Install Swaks on Debian or Ubuntu systems using the apt-get package manager. ```bash sudo apt-get install swaks ``` -------------------------------- ### Install Debian Dependencies for swaks Source: https://github.com/jetmore/swaks/blob/develop/testing/mta/exim-config/notes/install-notes.txt Installs essential development libraries required for building and running swaks on Debian. Ensure these are installed before proceeding with swaks installation. ```bash sudo apt-get install libpcre3-dev sudo apt-get install libdb5.3-dev sudo apt-get install libssl-dev sudo apt-get install libsasl2-dev sudo apt-get install libidn2-dev sudo apt-get install libidn11-dev ``` -------------------------------- ### Initiate STARTTLS with Peer Verification Source: https://github.com/jetmore/swaks/blob/develop/testing/server/scripts/part-0203-starttls-basic-verify.txt This snippet shows the sequence of commands to start a STARTTLS session and enable peer verification. ```perl get_line(); # STARTTLS send_line("220 TLS go ahead"); start_tls({ VERIFY_PEER => 1 }); #include("$Bin/scripts/part-ehlo-all.txt"); ``` -------------------------------- ### Install Swaks on Arch Linux Source: https://github.com/jetmore/swaks/blob/develop/doc/installation.html Install Swaks on Arch Linux systems using the pacman package manager. ```bash sudo pacman -S swaks ``` -------------------------------- ### Proxy Protocol v1, No Header Example Source: https://github.com/jetmore/swaks/blob/develop/testing/regressions/_options-proxy/test.txt Demonstrates the format for a v1 proxy protocol with no header. ```text TCP4 1.1.1.1 2.2.2.2 1 2 ``` -------------------------------- ### Build Postfix from Source with Custom Configuration Source: https://github.com/jetmore/swaks/blob/develop/testing/mta/postfix-config/_NOTES/install-notes.txt Compiles Postfix from source with specific build arguments, including TLS support and custom directory paths for installation components. ```bash make tidy make makefiles \ CCARGS="-DUSE_TLS" AUXLIBS="-lssl -lcrypto" \ config_directory=/home/jetmore/Documents/git/swaks/testing/mta/postfix-config \ command_directory=/home/jetmore/Documents/git/swaks/testing/mta/postfix-install/bin \ daemon_directory=/home/jetmore/Documents/git/swaks/testing/mta/postfix-install/libexec \ data_directory=/home/jetmore/Documents/git/swaks/testing/mta/postfix-install/lib \ mail_spool_directory=/home/jetmore/Documents/git/swaks/testing/mta/postfix-install/mailspool \ mailq_path=/home/jetmore/Documents/git/swaks/testing/mta/postfix-install/bin/mailq \ manpage_directory=/home/jetmore/Documents/git/swaks/testing/mta/postfix-install/man \ meta_directory=/home/jetmore/Documents/git/swaks/testing/mta/postfix-config \ newaliases_path=/home/jetmore/Documents/git/swaks/testing/mta/postfix-install/bin/newaliases \ queue_directory=/home/jetmore/Documents/git/swaks/testing/mta/postfix-install/queue \ readme_directory=/home/jetmore/Documents/git/swaks/testing/mta/postfix-install/readme \ sendmail_path=/home/jetmore/Documents/git/swaks/testing/mta/postfix-install/bin/sendmail \ shlib_directory=/home/jetmore/Documents/git/swaks/testing/mta/postfix-install/lib make ``` -------------------------------- ### Install Swaks via CPAN Source: https://github.com/jetmore/swaks/blob/develop/doc/installation.html Install Swaks using the CPAN module for Perl. This method is recommended for cross-platform compatibility, including Windows. ```bash sudo cpan install App::swaks ``` ```perl perl Makefile.PL INSTALL_BASE=~/ ``` -------------------------------- ### Using Command Line Options for Swaks Source: https://github.com/jetmore/swaks/blob/develop/RELEASE/doc/ref.txt Swaks options can be provided directly on the command line, similar to most UNIX utilities. Both short and long forms of options are supported. This example demonstrates setting the 'from' address and the 'h-From' header. ```bash $ swaks --from fred@example.com --h-From: '"Fred Example" ' ``` -------------------------------- ### Windows Environment Setup Commands Source: https://github.com/jetmore/swaks/blob/develop/testing/regressions/etc/README.txt Commands to configure file associations and PATHEXT environment variable on Windows to ensure Perl scripts are executed correctly. These commands help in associating .pl files with the Perl interpreter. ```batch assoc .pl=PerlScript ftype PerlScript=C:\Strawberry\perl\bin\perl.exe "%1" %* setx PATHEXT %PATHEXT%;.pl ``` -------------------------------- ### Proxy Protocol v1, Proxy Header, Base64 Encoded Example Source: https://github.com/jetmore/swaks/blob/develop/testing/regressions/_options-proxy/test.txt Illustrates a v1 proxy protocol with a proxy header, encoded in Base64. ```text base64:UFJPWFkgVENQNCAxLjEuMS4xIDIuMi4yLjIgMSAy ``` -------------------------------- ### Proxy Protocol v1, No Header, Base64 Encoded Example Source: https://github.com/jetmore/swaks/blob/develop/testing/regressions/_options-proxy/test.txt Shows a v1 proxy protocol with no header, encoded in Base64. ```text base64:VENQNCAxLjEuMS4xIDIuMi4yLjIgMSAy ``` -------------------------------- ### Check Swaks Support Source: https://github.com/jetmore/swaks/blob/develop/doc/README-template.txt Run this command to see what Swaks can do on your system based on installed Perl modules. It will list supported features and indicate missing functionality. ```bash swaks --support ``` -------------------------------- ### Check Test Environment Setup Source: https://github.com/jetmore/swaks/blob/develop/testing/regressions/etc/README.txt Ensures the local environment is configured correctly for running the swaks test suite. Set SWAKS_TEST_SWAKS to the swaks executable path and PERL5LIB for local module paths. ```shell SWAKS_TEST_SWAKS=../../swaks PERL5LIB=lib/authen-ntlm-local bin/check-env.pl ``` -------------------------------- ### Test SMTP Authentication (No Prompt Protection) Source: https://github.com/jetmore/swaks/blob/develop/testing/MANUAL.txt This example tests SMTP authentication without prompt protection. It verifies that both the username and password are echoed correctly in the output when entered. ```bash RELEASE/swaks --to foo --dump AUTH --auth ``` -------------------------------- ### Initiate STARTTLS Source: https://github.com/jetmore/swaks/blob/develop/testing/server/scripts/part-0200-starttls-basic.txt This snippet shows the sequence of commands to initiate a STARTTLS handshake. It includes reading a line, sending a confirmation, and executing the STARTTLS command. ```bash get_line(); # STARTTLS send_line("220 TLS go ahead"); start_tls(); ``` -------------------------------- ### Advertise EHLO with STARTTLS Source: https://github.com/jetmore/swaks/blob/develop/testing/server/scripts/part-0104-ehlo-tls-only.txt This snippet shows the sequence of commands to advertise EHLO capabilities, including STARTTLS, to a client. Ensure the server is configured to support TLS for this to be effective. ```bash get_line(); # EHLO send_line("250-SERVER Hello Server [1.1.1.1]"); send_line("250-STARTTLS"); send_line("250 HELP"); ``` -------------------------------- ### Install Swaks using MacPorts (macOS) Source: https://github.com/jetmore/swaks/blob/develop/doc/installation.html Install Swaks on macOS using the MacPorts package manager. ```bash port install swaks ``` -------------------------------- ### Proxy Protocol v2, No Header, Base64 Encoded Example Source: https://github.com/jetmore/swaks/blob/develop/testing/regressions/_options-proxy/test.txt Provides an example of a v2 proxy protocol with no header, encoded in Base64. ```text base64:IREADAEBAQECAgICAG8A3g== ``` -------------------------------- ### Running SWAKS with SMTP Server Source: https://github.com/jetmore/swaks/blob/develop/testing/server/scripts/script-tls-success.txt These commands demonstrate how to run the local SMTP server and then use SWAKS to send an email to it, simulating a successful email transaction. ```bash # ./smtp-server.pl -p 8026 -f scripts/basic-successful-email.txt # ./swaks -s 127.0.0.1 -p 8026 -t foo@example.com ``` -------------------------------- ### Set Release Version and Directories Source: https://github.com/jetmore/swaks/blob/develop/util/release-process.txt Set the release version and define necessary directory paths for the release process. ```shell export RELEASE=20240103.0 export SWAKSDIR=/Users/jetmore/Documents/git/swaks export BUILDDIR=$SWAKSDIR/tmp ``` -------------------------------- ### SWAKS Server and Port Specification Source: https://github.com/jetmore/swaks/blob/develop/testing/regressions/_options-transport/test.txt Shows how to specify the server and port using the --server option, including different formats for hostnames and IP addresses. ```bash --server foo:1025 ``` ```bash --server 1.1.1.1:1025 ``` ```bash --server [foo]:1025 ``` ```bash --server [1.1.1.1]:1025 ``` ```bash --server [::1]:1025 ``` ```bash --server foo/1025 ``` ```bash --server 1.1.1.1/1025 ``` ```bash --server ::1/1025 ``` ```bash --server [::1]:telnet ``` ```bash --server [::1]:foobar (should fail) ``` -------------------------------- ### SWAKS Get Line Function Source: https://github.com/jetmore/swaks/blob/develop/testing/server/scripts/part-2504-data-data-only.txt Retrieves a line from the server. This is a placeholder command and not actual data. ```bash get_line(); # DATA (command, not actual data) ``` -------------------------------- ### SWAKS Default Script - STARTTLS Source: https://github.com/jetmore/swaks/blob/develop/testing/server/scripts/script-tls-success.txt Includes the basic STARTTLS command to upgrade the connection to TLS. ```perl include("$scriptDir/part-0200-starttls-basic.txt"); include("$scriptDir/part-0101-ehlo-all.txt"); ``` -------------------------------- ### Prepare Test Output and Reference Files Source: https://github.com/jetmore/swaks/blob/develop/testing/regressions/etc/format.txt Removes the existing output file before a test run to prevent interference from previous executions. Creates a reference output file for comparison. ```bash pre action: REMOVE_FILE %OUTDIR%/%TESTID%.out pre action: CREATE_FILE %REFDIR%/%TESTID%.out ``` -------------------------------- ### Check POD File Syntax Source: https://github.com/jetmore/swaks/blob/develop/util/pod-notes.txt Use these commands to check the syntax and generate man pages for POD files. Redirecting output to /dev/null is common for checks that only care about exit codes. ```bash pod2text base.pod >/dev/null ``` ```bash podchecker -warnings -warnings base.pod ``` ```bash pod2man --center=SWAKS --section=1 base.pod >/dev/null ``` -------------------------------- ### SWAKS Timeout with Invalid Unit Source: https://github.com/jetmore/swaks/blob/develop/testing/regressions/_options-protocol/test.txt This example shows an invalid unit 'g' used with the --timeout option, which is expected to cause an error. ```bash 509 --timeout 2g # error ``` -------------------------------- ### Prepare Release Branch Source: https://github.com/jetmore/swaks/blob/develop/util/release-process.txt Fetch the latest changes, checkout the develop branch, pull updates, and create a new release branch. ```shell cd $SWAKSDIR git fetch git checkout develop git pull git checkout -b release/v$RELEASE ``` -------------------------------- ### Proxy Protocol v2, Proxy Header, Base64 Encoded Example Source: https://github.com/jetmore/swaks/blob/develop/testing/regressions/_options-proxy/test.txt Shows a v2 proxy protocol with a proxy header, encoded in Base64. ```text base64:DQoNCgANClFVSVQKIREADAEBAQECAgICAG8A3g== ``` -------------------------------- ### SWAKS Local Interface and Port Specification Source: https://github.com/jetmore/swaks/blob/develop/testing/regressions/_options-transport/test.txt Shows how to specify the local interface and port using the --local-interface option, including different formats for hostnames and IP addresses. ```bash --local-interface foo:1025 ``` ```bash --local-interface 1.1.1.1:1025 ``` ```bash --local-interface [foo]:1025 ``` ```bash --local-interface [1.1.1.1]:1025 ``` ```bash --local-interface [::1]:1025 ``` ```bash --local-interface foo/1025 ``` ```bash --local-interface 1.1.1.1/1025 ``` ```bash --local-interface ::1/1025 ``` ```bash --local-interface [::1]:telnet ``` ```bash --local-interface [::1]:foobar (should fail) ``` -------------------------------- ### SWAKS DATA Command Initiation Source: https://github.com/jetmore/swaks/blob/develop/testing/server/scripts/part-2500-data-accept-basic.txt Initiates the DATA command and sends the initial prompt to the client. Use this to start the email data transfer phase. ```bash get_line(); # DATA (command, not actual data) send_line("354 Enter message, ending with \".\" on a line by itself"); ``` -------------------------------- ### Run Tests Using runenv Script Source: https://github.com/jetmore/swaks/blob/develop/testing/regressions/etc/README.txt Utilizes the 'runenv' convenience script to set up necessary environment variables before executing test scripts. This simplifies command-line execution. ```shell bin/runenv bin/check-env.pl ``` ```shell bin/runenv bin/run-tests.pl _options-auth ``` ```shell bin/runenv bin/run-tests.pl _options-auth 00300 ``` ```shell bin/runenv bin/run-all.pl ``` ```shell bin/runenv bin/run-all.pl --errors ``` ```shell bin/runenv bin/run-all.pl --winnow ``` -------------------------------- ### Create Full Certificate Chain Source: https://github.com/jetmore/swaks/blob/develop/testing/certs/NOTES.txt Constructs a complete certificate chain including the end-user certificate, intermediate CA, and root CA. ```bash $ cat signed-intermediate.example.com.crt ca-intermediate.pem ca.pem > signed-intermediate-full-chain.pem $ openssl verify -CAfile signed-intermediate-full-chain.pem signed-intermediate.example.com.crt signed-intermediate.example.com.crt: OK ``` -------------------------------- ### Specify Password and XCLIENT Prompt Source: https://github.com/jetmore/swaks/blob/develop/testing/regressions/_options-data/test.txt These options configure the prompts for password and XCLIENT string input during swaks execution. ```text -p 'Password:' ``` ```text -p 'XCLIENT string:' ``` -------------------------------- ### Publishing Perl Package to CPAN Source: https://github.com/jetmore/swaks/blob/develop/util/release-process.txt Uploads the Swaks Perl package tarball to CPAN using CPAN::Uploader. Requires CPAN::Uploader to be installed and a valid .pause configuration file. ```bash /opt/homebrew/Cellar/perl/5.38.2_1/bin/cpan-upload --config $BUILDDIR/.pause $BUILDDIR/App-swaks-$RELEASE.tar.gz ``` -------------------------------- ### Setting Swaks Options via Environment Variables Source: https://github.com/jetmore/swaks/blob/develop/RELEASE/doc/ref.txt Environment variables can be used to set Swaks options. Variable names follow the pattern $SWAKS_OPT_name, replacing dashes with underscores. For example, setting SWAKS_OPT_from and SWAKS_OPT_h_From. ```bash $ SWAKS_OPT_from='fred@example.com' $ SWAKS_OPT_h_From='"Fred Example" ' ``` -------------------------------- ### SWAKS with XCLIENT Address and Name Options Source: https://github.com/jetmore/swaks/blob/develop/testing/xclient/commands.txt Alternatively, use separate --xclient-addr and --xclient-name options to specify the client IP and hostname. This provides a more structured way to pass XCLIENT details. ```bash swaks -s 127.0.0.1 --port 8026 --auth-user foo --auth-password password \ -f john@jetmore.org -t jj33@pobox.com \ --header 'Subject: 20141212' \ --xclient-addr 25.25.25.25 --xclient-name g3.jetmore.net ``` -------------------------------- ### Verify Signed Certificate Against Intermediate CA Source: https://github.com/jetmore/swaks/blob/develop/testing/certs/NOTES.txt Attempt to verify a signed certificate using an intermediate CA. This example demonstrates a scenario where verification fails due to an incorrect CA file or a missing certificate in the chain. ```bash $ openssl verify -show_chain -CAfile ca-intermediate.pem signed-intermediate.example.com.crt ``` -------------------------------- ### TLS Verification with Standard CA Path (Succeed) Source: https://github.com/jetmore/swaks/blob/develop/testing/commands-tls.txt Use --tls --tls-verify with the standard system CA path for successful verification against a validly-signed server. ```bash --tls --tls-verify --tls-ca-path /etc/ssl/certs --server sasl.smtp.pobox.com:587 ``` -------------------------------- ### Postfix main.cf Configuration Source: https://github.com/jetmore/swaks/blob/develop/testing/mta/postfix-config/_NOTES/install-notes.txt Essential parameters to configure in Postfix's main.cf file for basic operation, network trust, and TLS settings. ```postfix mail_owner = jetmore setgid_group = mail mydestination = $myhostname, node.example.com mynetworks = 192.168.0.0/16, 127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12 alias_database = texthash:/home/jetmore/Documents/git/swaks/testing/mta/postfix-config/aliases alias_maps = texthash:/home/jetmore/Documents/git/swaks/testing/mta/postfix-config/aliases maillog_file = /dev/stdout smtpd_authorized_xclient_hosts = 192.168.0.0/16, 127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12 smtpd_authorized_xforward_hosts = 192.168.0.0/16, 127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12 smtpd_tls_cert_file = /home/jetmore/Documents/git/swaks/testing/certs/node.example.com.crt smtpd_tls_key_file = /home/jetmore/Documents/git/swaks/testing/certs/node.example.com.key smtpd_tls_security_level = may ```