Skip to content

Instantly share code, notes, and snippets.

View idkjs's full-sized avatar

Alain Armand idkjs

View GitHub Profile

Private Mailserver with Postfix, Dovecot and Fetchmail on macOS Big Sur M1

This is a simple installation and configuration manual to setup a private mailserver. The instructions will be continued in future...

Requirements

  • Apple M1 with macOS Big Sur but it should working at Intel Macs 64-bit too.
  • Replacement for the missing mail and imap services in the macOS Server
  • Receiving and sending emails of all accounts (private and business)
  • Using Postfix, Dovecot and Fetchmail
open Typeclasses;
// a binary search tree is a binary tree that holds order-able members and
// keeps lesser values on the left and greater or equal values on the right
module Make = (Order: Ord) => {
type t =
| Empty
| Node(t, Order.t, t);
// O(log n) operation to add a new value in a valid position in the tree
type ordering =
| Greater
| Less
| Equal;
// ORD typeclass / interface module
module type ORD = {
type t;
let compare: (t, t) => ordering;
};
let pure a = Some a |> Js.Promise.resolve
let fail _ = None |> Js.Promise.resolve
let (>=>) x y a =
x a
|> Js.Promise.then_ (
function
| None -> None |> Js.Promise.resolve
| Some s -> y s
)
@idkjs
idkjs / regexCheatsheet.re
Created June 16, 2021 15:28 — forked from sauvm/regexCheatsheet.re
regex cheatsheet
> Regular Expressions Cheat Sheet
> A regular expression specifies a set of strings that matches it. This cheat sheet is based off Python 3's Regular Expressions (http://docs.python.org/3/library/re.html) but is designed for searches within Sublime Text.
> Special Characters
\ Escapes special characters or signals a special sequence.
. Matches any single character except a newline.
^ Matches the start of the string.
$ Matches the end of the string.
* Greedily matches 0 or more repetitions of the preceding RE.
*? Matches 0 or more repetitions of the preceding RE.
@idkjs
idkjs / Dune.md
Created May 13, 2021 16:42 — forked from jtpaasch/Dune.md
Notes on using `dune` for OCaml.

Dune

A first pass

A library and then an executable that uses that library.

A simple library

Create a folder called foo:

@idkjs
idkjs / drevo-caliber.json
Created March 31, 2021 17:18 — forked from weblogix/drevo-caliber.json
[Karabiner-Elements] for DREVO Calibur 71-key Keyboard #mac #keyboard #karabiner
{
"title": "DREVO Calibur 71-key Keyboard",
"rules": [
{
"description": "Set ESC to grave_accent_and_tilde",
"manipulators": [
{
"type": "basic",
"from": {
"key_code": "escape",
@idkjs
idkjs / aria2c.md
Created February 12, 2021 11:49 — forked from danylokos/aria2c.md
aria2c multithread download
aria2c \
-x 16 \
-s 16 \
--load-cookies=cookies.txt \
https://download.developer.apple.com/Developer_Tools/Xcode_10.3/Xcode_10.3.xip
@idkjs
idkjs / homebrew-permissions-issue.md
Created December 16, 2020 11:05 — forked from irazasyed/homebrew-permissions-issue.md
Homebrew: Permissions Denied Issue Fix (OS X / macOS)

Homebrew Permissions Denied Issues Solution

sudo chown -R $(whoami) $(brew --prefix)/*

@idkjs
idkjs / SomeApp.re
Created September 16, 2020 14:48 — forked from johnhaley81/SomeApp.re
open Relude.Globals; // I usually do this in bsconfig
type user = {
firstName: string,
lastName: string,
};
type error =
| AlreadyLoggedIn;
type context = {