Initial commit.
This commit is contained in:
commit
13a5afb5fc
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
*~
|
||||
.*.swp
|
||||
cmd/autoresponder
|
73
cmd/autoresponder.go
Normal file
73
cmd/autoresponder.go
Normal file
@ -0,0 +1,73 @@
|
||||
package main
|
||||
|
||||
// This is postfix autoresponder, which is rewrite of the autoresponder bash script V1.6.3, written by Charles Hamilton - musashi@nefaria.com
|
||||
//
|
||||
// Written by Uros Juvan <asmpro@gmail.com> 2017
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"flag"
|
||||
"os"
|
||||
)
|
||||
|
||||
const VERSION = "1.0.0001"
|
||||
const DEBUG = true
|
||||
|
||||
func DebugFmtPrintf(format string, v ...interface{}) {
|
||||
if DEBUG {
|
||||
fmt.Printf("DEBUG: " + format, v...)
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
// Parse command line arguments
|
||||
recipientPtr := flag.String("r", "", "Recipient e-mail")
|
||||
senderPtr := flag.String("s", "", "Sender e-mail")
|
||||
saslUserPtr := flag.String("S", "", "SASL authenticated username")
|
||||
clientIpPtr := flag.String("C", "", "Client IP address")
|
||||
enableAutoResponsePtr := flag.String("e", "", "Enable autoresponse")
|
||||
disableAutoResponsePtr := flag.String("d", "", "Disable autoresponse")
|
||||
enableExAutoResponsePtr := flag.String("E", "", "Enable existing autoresponse")
|
||||
deleteAutoResponsePtr := flag.String("D", "", "Delete autoresponse")
|
||||
flag.Parse()
|
||||
|
||||
if DEBUG {
|
||||
DebugFmtPrintf(`Flags:
|
||||
Recipient: %v
|
||||
Sender: %v
|
||||
SASL authenticated username: %v
|
||||
Client IP: %v
|
||||
Enable autoresponse: %v
|
||||
Disable autoresponse: %v
|
||||
Enable existing autoresponse: %v
|
||||
Delete autoresponse: %v
|
||||
`,
|
||||
*recipientPtr,
|
||||
*senderPtr,
|
||||
*saslUserPtr,
|
||||
*clientIpPtr,
|
||||
*enableAutoResponsePtr,
|
||||
*disableAutoResponsePtr,
|
||||
*enableExAutoResponsePtr,
|
||||
*deleteAutoResponsePtr)
|
||||
}
|
||||
|
||||
// Do some logic on command line arguments
|
||||
// Mode
|
||||
// There are two different modes of operation:
|
||||
// mode=0 represents the actions that can not be executed from the command line
|
||||
// mode=1 represents the actions that can be executed from the command line
|
||||
mode := 0
|
||||
sendResponse := false
|
||||
authenticated := false
|
||||
if *recipientPtr != "" && *senderPtr != "" {
|
||||
sendResponse = true
|
||||
}
|
||||
if *saslUserPtr != "" && os.Getenv("SASL_USERNAME") != "" {
|
||||
authenticated = true
|
||||
}
|
||||
if *enableAutoResponsePtr != "" || *disableAutoResponsePtr != "" || *enableExAutoResponsePtr != "" || *deleteAutoResponsePtr != "" {
|
||||
mode = 1
|
||||
}
|
||||
DebugFmtPrintf("mode=%v, sendResponse=%v, authenticated=%v\n", mode, sendResponse, authenticated)
|
||||
}
|
Reference in New Issue
Block a user