diff --git a/etc/homebrew/inbucket.conf b/etc/homebrew/inbucket.conf new file mode 100644 index 0000000..6281583 --- /dev/null +++ b/etc/homebrew/inbucket.conf @@ -0,0 +1,115 @@ +# inbucket.conf +# homebrew inbucket configuration +# {{}} values will be replaced during installation + +############################################################################# +[DEFAULT] + +# Not used directly, but is typically referenced below in %()s format. +default.domain=inbucket.local +themes.dir={{HOMEBREW_PREFIX}}/share/inbucket/themes +datastore.dir={{HOMEBREW_PREFIX}}/var/inbucket/datastore + +############################################################################# +[logging] + +# Options from least to most verbose: ERROR, WARN, INFO, TRACE +level=INFO + +############################################################################# +[smtp] + +# IPv4 address to listen for SMTP connections on. +ip4.address=0.0.0.0 + +# IPv4 port to listen for SMTP connections on. +ip4.port=2500 + +# used in SMTP greeting +domain=%(default.domain)s + +# optional: mail sent to accounts at this domain will not be stored, +# for mixed use (content and load testing) +domain.nostore=bitbucket.local + +# Maximum number of RCPT TO: addresses we allow from clients, the SMTP +# RFC recommends this be at least 100. +max.recipients=100 + +# How long we allow a network connection to be idle before hanging up on the +# client, SMTP RFC recommends at least 5 minutes (300 seconds). +max.idle.seconds=300 + +# Maximum allowable size of message body in bytes (including attachments) +max.message.bytes=2048000 + +# Should we place messages into the datastore, or just throw them away +# (for load testing): true or false +store.messages=true + +############################################################################# +[pop3] + +# IPv4 address to listen for POP3 connections on. +ip4.address=0.0.0.0 + +# IPv4 port to listen for POP3 connections on. +ip4.port=1100 + +# used in POP3 greeting +domain=%(default.domain)s + +# How long we allow a network connection to be idle before hanging up on the +# client, POP3 RFC requires at least 10 minutes (600 seconds). +max.idle.seconds=600 + +############################################################################# +[web] + +# IPv4 address to serve HTTP web interface on +ip4.address=0.0.0.0 + +# IPv4 port to serve HTTP web interface on +ip4.port=9000 + +# Name of web theme to use +theme=bootstrap + +# Path to the selected themes template files +template.dir=%(themes.dir)s/%(theme)s/templates + +# Should we cache parsed templates (set to false during theme dev) +template.cache=true + +# Path to the selected themes public (static) files +public.dir=%(themes.dir)s/%(theme)s/public + +# Path to the greeting HTML displayed on front page, can be moved out of +# installation dir for customization +greeting.file=%(themes.dir)s/greeting.html + +# Key used to sign session cookie data so that it cannot be tampered with. +# If this is left unset, Inbucket will generate a random key at startup +# and previous sessions will be invalidated. +cookie.auth.key=secret-inbucket-session-cookie-key + +############################################################################# +[datastore] + +# Path to the datastore, mail will be written into subdirectories +path=%(datastore.dir)s + +# How many minutes after receipt should a message be stored until it's +# automatically purged. To retain messages until manually deleted, set this +# to 0 +retention.minutes=10080 + +# How many milliseconds to sleep after purging messages from a mailbox. +# This should help reduce disk I/O when there are a large number of messages +# to purge. +retention.sleep.millis=100 + +# Maximum number of messages we will store in a single mailbox. If this +# number is exceeded, the oldest message in the box will be deleted each +# time a new message is received for it. +mailbox.message.cap=100 diff --git a/etc/homebrew/inbucket.rb b/etc/homebrew/inbucket.rb new file mode 100644 index 0000000..dfed876 --- /dev/null +++ b/etc/homebrew/inbucket.rb @@ -0,0 +1,147 @@ +require "language/go" + +class Inbucket < Formula + desc "Disposable webmail service with built in SMTP, POP3, REST servers" + homepage "http://www.inbucket.org/" + url "https://github.com/jhillyerd/inbucket.git", :tag => "1.1.0-rc3" + + head "https://github.com/jhillyerd/inbucket.git", :branch => "develop" + + devel do + url "https://github.com/jhillyerd/inbucket.git", :branch => "master" + version "1.1.1-alpha" + end + + def log_path + var/"log/inbucket.log" + end + + depends_on "go" => :build + + go_resource "github.com/goods/httpbuf" do + url "https://github.com/goods/httpbuf.git", + :revision => "5709e9bb814c932e48b6737e1cf214a6522453a2" + end + + go_resource "github.com/gorilla/context" do + url "https://github.com/gorilla/context.git", + :revision => "1ea25387ff6f684839d82767c1733ff4d4d15d0a" + end + + go_resource "github.com/gorilla/mux" do + url "https://github.com/gorilla/mux.git", + :revision => "acf3be1b335c8ce30b2c8d51300984666f0ceefa" + end + + go_resource "github.com/gorilla/securecookie" do + url "https://github.com/gorilla/securecookie.git", + :revision => "8dacca26977607e637262eb66b15b7d39f2d3009" + end + + go_resource "github.com/gorilla/sessions" do + url "https://github.com/gorilla/sessions.git", + :revision => "8cd570d8b4ed84b18bca9d8c3ae2db55885ccd8b" + end + + go_resource "github.com/jaytaylor/html2text" do + url "https://github.com/jaytaylor/html2text.git", + :revision => "4936b6c2ae7f89f5eeba2473c31fd27ea8f11068" + end + + go_resource "github.com/jhillyerd/go.enmime" do + url "https://github.com/jhillyerd/go.enmime.git", + :revision => "3ea281bf3e00864f4afe2f9a6911af164438b581" + end + + go_resource "github.com/robfig/config" do + url "https://github.com/robfig/config.git", + :revision => "0f78529c8c7e3e9a25f15876532ecbc07c7d99e6" + end + + go_resource "golang.org/x/net" do + url "https://go.googlesource.com/net.git", + :revision => "3e5cd1ed149001198e582f9d3f5bfd564cde2896" + end + + go_resource "golang.org/x/sys" do + url "https://go.googlesource.com/sys.git", + :revision => "7a56174f0086b32866ebd746a794417edbc678a1" + end + + go_resource "golang.org/x/text" do + url "https://go.googlesource.com/text.git", + :revision => "a71fd10341b064c10f4a81ceac72bcf70f26ea34" + end + + def install + package = "github.com/jhillyerd/inbucket" + contents = Dir["{*,.git,.gitignore}"] + gopath = buildpath/"gopath" + (gopath/"src/#{package}").install contents + + ENV["GOPATH"] = gopath + ENV.prepend_create_path "PATH", gopath/"bin" + + Language::Go.stage_deps resources, gopath/"src" + + cd gopath/"src/#{package}" do + system "go", "build" + bin.install "inbucket" + pkgshare.install "themes" + inreplace "etc/homebrew/inbucket.conf" do |s| + # We want the config to use non-versioned paths + s.gsub!(/{{HOMEBREW_PREFIX}}/, HOMEBREW_PREFIX) + end + etc.install "etc/homebrew/inbucket.conf" + end + end + + def caveats; <<-EOS.undent + By default, inbucket listens on the following TCP ports: + 0.0.0.0:2500 - SMTP + 0.0.0.0:1100 - POP3 + 0.0.0.0:9000 - HTTP + + You may change these ports by editing #{etc}/inbucket.conf + + Once inbucket has started, access its web interface at: + http://localhost:9000/ + EOS + end + + test do + system "#{bin}/inbucket", "-help" + end + + plist_options :startup => "true" + + def plist; <<-EOS.undent + + + + + Label + #{plist_name} + RunAtLoad + + KeepAlive + + WorkingDirectory + #{HOMEBREW_PREFIX} + ProgramArguments + + #{opt_bin}/inbucket + #{etc}/inbucket.conf + + StandardErrorPath + #{log_path} + EnvironmentVariables + + LANG + en_US.UTF-8 + + + + EOS + end +end