bhm(8)

πŸ’– bhm β€” bestie edition πŸ’–

okay so this is bhm(8), a section-8 system admin page from the Postal crew, and no cap it's kinda iconic: it's a program that sends SMTP mail straight to /dev/null. Yes. The void. The digital black hole. Mail goes in, nothing comes out. Slay.


✨ NAME ✨

bhm β€” a program to send SMTP mail to /dev/null. πŸ•³οΈβœ¨


πŸŽ€ SYNOPSIS πŸŽ€

bhm [-m maximum-message-size] [-t threads] [-b bind-address] [-p
listen-port] [ -s ] [-a] [-[z|Z] debug-file] [-r reverse-dns]
user-list-filename

πŸ’… DESCRIPTION πŸ’…

This manual page documents briefly the bhm program. Just the highlights, bestie β€” the whole thing.

It is designed to test the performance of SMTP relay servers by receiving mail to /dev/null at random speeds. So like… it's a stress test. It's a vibe check for your mail server. It swallows everything and rates how gracefully your relay handles being absolutely flooded. 🫢

The user-list-filename is the name of a file which contains a list of valid user's email addresses. That file may have three fields separated by spaces:

  1. the email address
  2. the password (used for rabid)
  3. an optional third field to specify what is to be done with the mail

and that third field is doing a LOT, so let's break it down:

  • d means that it is to be deferred (SMTP 45x)
  • r means that it is to be rejected (SMTP 55x)
  • b means that it is to be accepted and bounced
  • g means that it is to be grey-listed

The reverse-dns file is in the same format as /etc/hosts and gives the value that will be used in the 220 message. Otherwise it will be bhm.

The maximum-message-size indicates the size in Kilobytes that will be the maximum size of a message that will be accepted. The default is 10240k.

The -s parameter enables SSL. πŸ”’

The listen-port parameter specifies the TCP port to listen on (default 25).

The bind-address parameter specifies the IP address to bind to (default is INADDR_ANY β€” accept connections on all local addresses).

The threads parameter is the number of threads that may be created to receive mail. Note that your BHM machine may have hardware and OS limits that determine how many connections it may receive. like… your hardware said "bestie I can only do so much" 😭

The -a command turns on all logging. All message data received will be logged. This will make it slow and it may not be able to saturate a fast Ethernet link...

🚨 heads up: -a logs all message data. It will be slow, and it may not be able to saturate a fast Ethernet link. You've been warned, queen.

The -z switch allows you to specify a debugging file base. From this base one file is created for each thread (with a : and the thread number appended), each file is used to log all IO performed by that thread for debugging purposes.

The -Z switch is the same but creates a separate file for each connection as well with an attitional : appended followed by the connection number.


🌈 RETURN CODES 🌈

  • 0 β€” No Error πŸ‘‘
  • 1 β€” Bad Parameters πŸ™ˆ
  • 2 β€” System Error, lack of memory or some other resource πŸ’€

πŸ¦‹ AUTHOR πŸ¦‹

This program, it's manual page, and the Debian package were written by Russell Coker <russell@coker.com.au>. legend behaviour, fr fr. πŸ’œ


⭐ AVAILABILITY ⭐

The source is available from http://doc.coker.com.au/projects/postal/ .

See http://etbe.coker.com.au/category/benchmark for further information.


πŸ“ SEE ALSO πŸ“

postal(8), postal-list(8), rabid(8)


and that's the whole page, bestie β€” written by russell@coker.com.au, version 0.70, and this little era of the Postal docs dates back to the date stamped on it. go off, bhm, you absolute void-dweller. πŸ’–βœ¨πŸŽ€