Replace example.com with your domain. All occurrences of the string 'mail' are know as the selector and can be any alpha numeric string.
Install opendkim:
$ sudo apt-get install opendkim opendkim-tools
# print value pairs from an array in lower case | |
jq --raw-output '.[] | "\(.key_1 | ascii_downcase) \(.key_2 | ascii_downcase)"' | |
# convert `key=value` lines into `{"key":"value"}` json | |
jq --raw-input 'split("=") | {(.[0]):.[1]}' some.conf | jq --slurp 'add' | |
# validate json (bad) | |
echo '{hello: "there"}' | jq . >/dev/null 2>&1 && echo good json || echo bad json | |
bad json |
#!/usr/bin/perl -w | |
use Net::CIDR; | |
use Getopt::Long; | |
# Net::CIDR one liner: | |
# perl -mNet::CIDR -ne 'print if Net::CIDR::cidrlookup($_, ("10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"))' | |
# | |
# TODO: add ip address validation |
# Use awk to to redirect docker build output to stderr for visual feedback | |
# while capturing the image id on stdout when the build is sucessfull | |
ID=$(docker build . | awk '{print > "/dev/stderr"} END {if (/^Successfully built /) print $NF; else exit 1}') | |
# given docker volume path, return local storage path | |
doc2loc(){ docker inspect --format "{{range .Mounts}}{{if eq .Destination \"$1\"}}{{.Source}}{{end}}{{end}}" $2;} |
#!/bin/bash | |
agree() { | |
local question="$1" | |
while true; do | |
read -p "$question " answer | |
case $answer in | |
[Yy]|[Yy][Ee][Ss]) return 0 ;; | |
[Nn]|[Nn][Oo]|'') return 1 ;; # empty string is default |
#!/bin/sh | |
# sample usage: | |
# ontouchdo malformed.html 'clear; xmllint --noout --valid malformed.html 2>&1 | head -n20' | |
# | |
# Now fix some things in malformed.html and save. See the remaining errors in real time. Ctrl-c to quit. | |
[ ! -r "$1" ] && echo 'Nothing to watch.' && exit 1 | |
[ ! -n "$2" ] && echo 'Nothing to do.' && exit 1 |
#!/usr/bin/perl | |
use strict; | |
use warnings; | |
use Getopt::Long; | |
use Digest::MD5; | |
#use diagnostics; | |
my $minimum = 0; | |
my $header = ''; |
#!/bin/bash | |
START=$(date +%s) | |
read -s -n1 -p $'Press a key when done.\n' | |
ELAPSED_SECONDS=$(bc <<< "scale=10; ($(date +%s) - $START)") | |
if [ $ELAPSED_SECONDS -gt 60 ]; then | |
ELAPSED_MINUTES=$((ELAPSED_SECONDS / 60)) | |
ELAPSED_SECONDS=$((ELAPSED_SECONDS - ELAPSED_MINUTES * 60)) | |
echo -n "$ELAPSED_MINUTES minutes " | |
fi |
CREATE USER 'someuser'@'localhost' IDENTIFIED BY 'cleartext-password'; | |
GRANT SELECT,INSERT,UPDATE,DELETE ON `database`.* TO 'someuser'@'localhost'; |
telnet smtp.example.com 25 | |
Trying 203.0.113.1... | |
Connected to smtp.example.com. | |
Escape character is '^]'. | |
220 example.com running My Bitchin Mail Server 1.0.0 | |
HELO example.org | |
250 example.com hello example.org (198.51.100.1) | |
MAIL FROM:<[email protected]> | |
250 2.1.5 sender OK | |
RCPT TO:<[email protected]> |