haraka delete

This commit is contained in:
Simon Larsen
2025-07-25 09:07:09 +01:00
parent 7d2241ba98
commit 64c0c8b4cb
40 changed files with 14 additions and 1138 deletions

View File

@@ -209,22 +209,6 @@ jobs:
- name: build docker image
run: sudo docker build -f ./Dashboard/Dockerfile .
docker-build-haraka:
runs-on: ubuntu-latest
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Preinstall
run: npm run prerun
# build images
- name: build docker image
run: sudo docker build -f ./Haraka/Dockerfile .
docker-build-probe:
runs-on: ubuntu-latest
env:

View File

@@ -1052,67 +1052,6 @@ jobs:
GIT_SHA=${{ github.sha }}
APP_VERSION=7.0.${{needs.generate-build-number.outputs.build_number}}
haraka-docker-image-deploy:
needs: [generate-build-number]
runs-on: ubuntu-latest
steps:
- name: Docker Meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
oneuptime/haraka
ghcr.io/oneuptime/haraka
tags: |
type=raw,value=release,enable=true
type=semver,value=7.0.${{needs.generate-build-number.outputs.build_number}},pattern={{version}},enable=true
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v4
with:
node-version: latest
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Generate Dockerfile from Dockerfile.tpl
run: npm run prerun
# Build and deploy haraka.
- name: Login to Docker Hub
uses: docker/login-action@v2.2.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v2.2.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v4
with:
file: ./Haraka/Dockerfile
context: .
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: |
GIT_SHA=${{ github.sha }}
APP_VERSION=7.0.${{needs.generate-build-number.outputs.build_number}}
admin-dashboard-docker-image-deploy:
needs: [generate-build-number]
runs-on: ubuntu-latest
@@ -1838,7 +1777,7 @@ jobs:
test-e2e-release-saas:
runs-on: ubuntu-latest
needs: [open-telemetry-ingest-docker-image-deploy, copilot-docker-image-deploy, fluent-ingest-docker-image-deploy, docs-docker-image-deploy, api-reference-docker-image-deploy, workflow-docker-image-deploy, llm-docker-image-deploy, accounts-docker-image-deploy, admin-dashboard-docker-image-deploy, app-docker-image-deploy, dashboard-docker-image-deploy, haraka-docker-image-deploy, probe-ingest-docker-image-deploy, server-monitor-ingest-docker-image-deploy, isolated-vm-docker-image-deploy, home-docker-image-deploy, worker-docker-image-deploy, otel-collector-docker-image-deploy, probe-docker-image-deploy, status-page-docker-image-deploy, test-docker-image-deploy, test-server-docker-image-deploy, publish-npm-packages, e2e-docker-image-deploy, helm-chart-deploy, generate-build-number, nginx-docker-image-deploy, incoming-request-ingest-docker-image-deploy]
needs: [open-telemetry-ingest-docker-image-deploy, copilot-docker-image-deploy, fluent-ingest-docker-image-deploy, docs-docker-image-deploy, api-reference-docker-image-deploy, workflow-docker-image-deploy, llm-docker-image-deploy, accounts-docker-image-deploy, admin-dashboard-docker-image-deploy, app-docker-image-deploy, dashboard-docker-image-deploy, probe-ingest-docker-image-deploy, server-monitor-ingest-docker-image-deploy, isolated-vm-docker-image-deploy, home-docker-image-deploy, worker-docker-image-deploy, otel-collector-docker-image-deploy, probe-docker-image-deploy, status-page-docker-image-deploy, test-docker-image-deploy, test-server-docker-image-deploy, publish-npm-packages, e2e-docker-image-deploy, helm-chart-deploy, generate-build-number, nginx-docker-image-deploy, incoming-request-ingest-docker-image-deploy]
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:
@@ -1891,7 +1830,7 @@ jobs:
test-e2e-release-self-hosted:
runs-on: ubuntu-latest
# After all the jobs runs
needs: [open-telemetry-ingest-docker-image-deploy, publish-mcp-server, copilot-docker-image-deploy, incoming-request-ingest-docker-image-deploy, fluent-ingest-docker-image-deploy, docs-docker-image-deploy, api-reference-docker-image-deploy, workflow-docker-image-deploy, llm-docker-image-deploy, accounts-docker-image-deploy, admin-dashboard-docker-image-deploy, app-docker-image-deploy, dashboard-docker-image-deploy, haraka-docker-image-deploy, probe-ingest-docker-image-deploy, server-monitor-ingest-docker-image-deploy, isolated-vm-docker-image-deploy, home-docker-image-deploy, worker-docker-image-deploy, otel-collector-docker-image-deploy, probe-docker-image-deploy, status-page-docker-image-deploy, test-docker-image-deploy, test-server-docker-image-deploy, publish-npm-packages, e2e-docker-image-deploy, helm-chart-deploy, generate-build-number, nginx-docker-image-deploy]
needs: [open-telemetry-ingest-docker-image-deploy, publish-mcp-server, copilot-docker-image-deploy, incoming-request-ingest-docker-image-deploy, fluent-ingest-docker-image-deploy, docs-docker-image-deploy, api-reference-docker-image-deploy, workflow-docker-image-deploy, llm-docker-image-deploy, accounts-docker-image-deploy, admin-dashboard-docker-image-deploy, app-docker-image-deploy, dashboard-docker-image-deploy, probe-ingest-docker-image-deploy, server-monitor-ingest-docker-image-deploy, isolated-vm-docker-image-deploy, home-docker-image-deploy, worker-docker-image-deploy, otel-collector-docker-image-deploy, probe-docker-image-deploy, status-page-docker-image-deploy, test-docker-image-deploy, test-server-docker-image-deploy, publish-npm-packages, e2e-docker-image-deploy, helm-chart-deploy, generate-build-number, nginx-docker-image-deploy]
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:

View File

@@ -1146,67 +1146,6 @@ jobs:
GIT_SHA=${{ github.sha }}
APP_VERSION=7.0.${{needs.generate-build-number.outputs.build_number}}
haraka-docker-image-deploy:
needs: generate-build-number
runs-on: ubuntu-latest
steps:
- name: Docker Meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
oneuptime/haraka
ghcr.io/oneuptime/haraka
tags: |
type=raw,value=test,enable=true
type=semver,value=7.0.${{needs.generate-build-number.outputs.build_number}}-test,pattern={{version}},enable=true
- uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- uses: actions/setup-node@v4
with:
node-version: latest
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Generate Dockerfile from Dockerfile.tpl
run: npm run prerun
# Build and deploy haraka.
- name: Login to Docker Hub
uses: docker/login-action@v2.2.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v2.2.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v4
with:
file: ./Haraka/Dockerfile
context: .
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: |
GIT_SHA=${{ github.sha }}
APP_VERSION=7.0.${{needs.generate-build-number.outputs.build_number}}
dashboard-docker-image-deploy:
needs: generate-build-number
runs-on: ubuntu-latest
@@ -1768,7 +1707,7 @@ jobs:
test-helm-chart:
runs-on: ubuntu-latest
needs: [infrastructure-agent-deploy, publish-mcp-server, llm-docker-image-deploy, publish-terraform-provider, open-telemetry-ingest-docker-image-deploy, copilot-docker-image-deploy, docs-docker-image-deploy, worker-docker-image-deploy, workflow-docker-image-deploy, isolated-vm-docker-image-deploy, home-docker-image-deploy, api-reference-docker-image-deploy, test-server-docker-image-deploy, test-docker-image-deploy, probe-ingest-docker-image-deploy, server-monitor-ingest-docker-image-deploy, probe-docker-image-deploy, haraka-docker-image-deploy, dashboard-docker-image-deploy, admin-dashboard-docker-image-deploy, app-docker-image-deploy, accounts-docker-image-deploy, otel-collector-docker-image-deploy, status-page-docker-image-deploy, nginx-docker-image-deploy, e2e-docker-image-deploy, fluent-ingest-docker-image-deploy, incoming-request-ingest-docker-image-deploy]
needs: [infrastructure-agent-deploy, publish-mcp-server, llm-docker-image-deploy, publish-terraform-provider, open-telemetry-ingest-docker-image-deploy, copilot-docker-image-deploy, docs-docker-image-deploy, worker-docker-image-deploy, workflow-docker-image-deploy, isolated-vm-docker-image-deploy, home-docker-image-deploy, api-reference-docker-image-deploy, test-server-docker-image-deploy, test-docker-image-deploy, probe-ingest-docker-image-deploy, server-monitor-ingest-docker-image-deploy, probe-docker-image-deploy, dashboard-docker-image-deploy, admin-dashboard-docker-image-deploy, app-docker-image-deploy, accounts-docker-image-deploy, otel-collector-docker-image-deploy, status-page-docker-image-deploy, nginx-docker-image-deploy, e2e-docker-image-deploy, fluent-ingest-docker-image-deploy, incoming-request-ingest-docker-image-deploy]
env:
CI_PIPELINE_ID: ${{github.run_number}}
steps:

3
.gitignore vendored
View File

@@ -86,9 +86,6 @@ Backups/*.tar
.env
Haraka/dkim/keys/private_base64.txt
Haraka/dkim/keys/public_base64.txt
.eslintcache
HelmChart/Values/*.values.yaml

View File

@@ -21,7 +21,7 @@ import React, { FunctionComponent, ReactElement, useEffect } from "react";
const Settings: FunctionComponent = (): ReactElement => {
const [emailServerType, setemailServerType] = React.useState<EmailServerType>(
EmailServerType.Internal,
EmailServerType.CustomSMTP,
);
const [isLoading, setIsLoading] = React.useState<boolean>(true);
@@ -43,7 +43,7 @@ const Settings: FunctionComponent = (): ReactElement => {
if (globalConfig) {
setemailServerType(
globalConfig.emailServerType || EmailServerType.Internal,
globalConfig.emailServerType || EmailServerType.CustomSMTP,
);
}
@@ -127,7 +127,7 @@ const Settings: FunctionComponent = (): ReactElement => {
/>
<CardModelDetail
name="Internal SMTP Settings"
name="Email Server Settings"
cardProps={{
title: "Email Server Settings",
description:
@@ -172,7 +172,7 @@ const Settings: FunctionComponent = (): ReactElement => {
cardProps={{
title: "Custom Email and SMTP Settings",
description:
"If you have not enabled Internal SMTP server to send emails. Please configure your SMTP server here.",
"Please configure your SMTP server here to send emails.",
}}
isEditable={true}
editButtonText="Edit SMTP Config"

View File

@@ -1,10 +1,8 @@
import Hostname from "Common/Types/API/Hostname";
import TwilioConfig from "Common/Types/CallAndSMS/TwilioConfig";
import Email from "Common/Types/Email";
import EmailServer from "Common/Types/Email/EmailServer";
import BadDataException from "Common/Types/Exception/BadDataException";
import ObjectID from "Common/Types/ObjectID";
import Port from "Common/Types/Port";
import { AdminDashboardClientURL } from "Common/Server/EnvironmentConfig";
import GlobalConfigService from "Common/Server/Services/GlobalConfigService";
import GlobalConfig, {
@@ -12,24 +10,6 @@ import GlobalConfig, {
} from "Common/Models/DatabaseModels/GlobalConfig";
import Phone from "Common/Types/Phone";
export const InternalSmtpPassword: string =
process.env["INTERNAL_SMTP_PASSWORD"] || "";
export const InternalSmtpHost: Hostname = new Hostname(
process.env["INTERNAL_SMTP_HOST"] || "haraka",
);
export const InternalSmtpPort: Port = new Port(2525);
export const InternalSmtpSecure: boolean = false;
export const InternalSmtpEmail: Email = new Email(
process.env["INTERNAL_SMTP_EMAIL"] || "noreply@oneuptime.com",
);
export const InternalSmtpFromName: string =
process.env["INTERNAL_SMTP_FROM_NAME"] || "OneUptime";
type GetGlobalSMTPConfig = () => Promise<EmailServer | null>;
export const getGlobalSMTPConfig: GetGlobalSMTPConfig =
@@ -132,10 +112,10 @@ export const getEmailServerType: GetEmailServerTypeFunction =
});
if (!globalConfig) {
return EmailServerType.Internal;
return EmailServerType.CustomSMTP;
}
return globalConfig.emailServerType || EmailServerType.Internal;
return globalConfig.emailServerType || EmailServerType.CustomSMTP;
};
export interface SendGridConfig {

View File

@@ -1,10 +1,4 @@
import {
InternalSmtpEmail,
InternalSmtpFromName,
InternalSmtpHost,
InternalSmtpPassword,
InternalSmtpPort,
InternalSmtpSecure,
SendGridConfig,
getEmailServerType,
getGlobalSMTPConfig,
@@ -202,19 +196,6 @@ export default class MailService {
};
}
public static getInternalEmailServer(): EmailServer {
return {
id: undefined,
username: InternalSmtpEmail.toString(),
password: InternalSmtpPassword,
host: InternalSmtpHost,
port: InternalSmtpPort,
fromEmail: InternalSmtpEmail,
fromName: InternalSmtpFromName,
secure: InternalSmtpSecure,
};
}
public static async getGlobalFromEmail(): Promise<Email> {
const emailServer: EmailServer | null = await this.getGlobalSmtpSettings();
@@ -540,17 +521,6 @@ export default class MailService {
options.emailServer = globalEmailServer;
}
if (
emailServerType === EmailServerType.Internal &&
(!options || !options.emailServer)
) {
if (!options) {
options = {};
}
options.emailServer = this.getInternalEmailServer();
}
if (options && options.emailServer && emailLog) {
emailLog.fromEmail = options.emailServer.fromEmail;
}

View File

@@ -17,7 +17,6 @@ import Port from "../../Types/Port";
import { Column, Entity } from "typeorm";
export enum EmailServerType {
Internal = "Internal",
Sendgrid = "Sendgrid",
CustomSMTP = "Custom SMTP",
}

View File

@@ -1,62 +0,0 @@
private
public
.git
node_modules
# See https://help.github.com/ignore-files/ for more about ignoring files.
# dependencies
/node_modules
node_modules
.idea
# testing
/coverage
# production
/build
# misc
.DS_Store
env.js
npm-debug.log*
yarn-debug.log*
yarn-error.log*
yarn.lock
Untitled-1
*.local.sh
*.local.yaml
run
stop
nohup.out*
encrypted-credentials.tar
encrypted-credentials/
_README.md
# Important Add production values to gitignore.
values-saas-production.yaml
kubernetes/values-saas-production.yaml
/private
/tls_cert.pem
/tls_key.pem
/keys
temp_readme.md
tests/coverage
settings.json
GoSDK/tester/
# tls
tls_cert.pem
tls_key.pem

6
Haraka/.gitignore vendored
View File

@@ -1,6 +0,0 @@
private
public
# tls
tls_cert.pem
tls_key.pem

View File

@@ -1,78 +0,0 @@
FROM public.ecr.aws/docker/library/node:23.8-alpine3.21
RUN mkdir /tmp/npm && chmod 2777 /tmp/npm && chown 1000:1000 /tmp/npm && npm config set cache /tmp/npm --global
RUN npm config set fetch-retries 5
RUN npm config set fetch-retry-mintimeout 100000
RUN npm config set fetch-retry-maxtimeout 600000
ENV HARAKA_VERSION=3.0.5
ARG GIT_SHA
ARG APP_VERSION
ENV GIT_SHA=${GIT_SHA}
ENV APP_VERSION=${APP_VERSION}
# IF APP_VERSION is not set, set it to 1.0.0
RUN if [ -z "$APP_VERSION" ]; then export APP_VERSION=1.0.0; fi
RUN apk add bash
# install dependence
RUN apk upgrade --update && \
apk add --no-cache -t .fetch-deps \
autoconf \
g++ \
bash \
curl \
gcc \
make \
python3 && \
addgroup -g 88 -S smtp && \
adduser -u 88 -D -S -G smtp -h /harakaapp smtp && \
# Install haraka and toobusy package
npm install -g --unsafe-perm Haraka@$HARAKA_VERSION toobusy-js && \
# # Cleaning up
apk del --purge -r .fetch-deps && \
apk add --no-cache tzdata openssl execline ca-certificates && \
rm -rf /var/cache/apk/* /tmp/* ~/.pearrc
RUN haraka -i /harakaapp
COPY ./Haraka/config/plugins /harakaapp/config/plugins
COPY ./Haraka/config/smtp.ini /harakaapp/config/smtp.ini
COPY ./Haraka/config/tls.ini /harakaapp/config/tls.ini
COPY ./Haraka/config/auth_flat_file.ini /harakaapp/config/auth_flat_file.ini
COPY ./Haraka/config/dkim_sign.ini /harakaapp/config/dkim_sign.ini
COPY ./Haraka/config/host_list /harakaapp/config/host_list
COPY ./Haraka/config/loglevel /harakaapp/config/loglevel
# create plugin directory
RUN mkdir -p /harakaapp/plugins
COPY ./Haraka/plugins/email_parser.js /harakaapp/plugins/email_parser.js
COPY ./Haraka/init.sh /init.sh
RUN chmod 755 /init.sh
# Copy package.json and package-lock.json
COPY ./Haraka/package.json /harakaapp/package.json
COPY ./Haraka/package-lock.json /harakaapp/package-lock.json
# Install dependencies
RUN cd /harakaapp && npm install
# Set permission to write logs and cache in case container run as non root
RUN chown -R 1000:1000 "/tmp/npm" && chmod -R 2777 "/tmp/npm"
EXPOSE 2525
EXPOSE 110
EXPOSE 25
EXPOSE 587
EXPOSE 465
EXPOSE 143
EXPOSE 993
EXPOSE 995
CMD ["/init.sh"]

View File

@@ -1,82 +0,0 @@
# Build haraka container.
```
sudo docker build . -t haraka:latest
```
# To update a stack
```
cd haraka
sudo docker stack deploy haraka -c docker-compose.yml
```
# To restart a service
```
sudo docker service update haraka_haraka --force
```
# Send Test Outbound Email
```
swaks --to hello@nawazdhandala.com --from hello@genosyn.com --server 192.168.1.100 --port 2525 --auth-user homelab --auth-password password
```
# Set a domain to send email
Generate a DKIM key:
```
cd dkim
bash generate.sh
cd ..
```
`public` and `private` files should have been generated inside of `dkim` folder. Please also add DNS and env vars to docker compose files. Values of that should be shown on the console.
Add an A record:
```
mailer.company.com <IP address or haraka server>
```
Set SPF record:
```
# Any MX or A servers can send emails.
v=spf1 mx a -all
```
Example:
```
v=spf1 mx a ip4:37.26.74.9 include:_spf.google.com include:mail.genosyn.com ~all
```
Set DMARC record:
```
Type: TXT
Key: _dmarc
Value: "v=DMARC1; p=reject; adkim=s; aspf=r; rua=mailto:dmarc-feedback@<DOMAIN>; ruf=mailto:dmarc-feedback@<DOMAIN>; pct=100"
```
Example:
```
_dmarc TXT "v=DMARC1; p=reject; adkim=s; aspf=r; rua=mailto:dmarc-feedback@genosyn.com; ruf=mailto:dmarc-feedback@genosyn.com; pct=100"
```
# Test, Test, Test.
Use https://www.mail-tester.com/ to test emails.

View File

@@ -1,4 +0,0 @@
[core]
methods=PLAIN
[users]

View File

@@ -1,3 +0,0 @@
disabled = false
selector = haraka
headers_to_sign = From, Sender, Reply-To, Subject, Date, Message-ID, To, Cc, MIME-Version

View File

@@ -1 +0,0 @@
DEBUG

View File

@@ -1,5 +0,0 @@
tls
auth/flat_file
dkim_sign
# email_parser

View File

@@ -1,64 +0,0 @@
; address to listen on (default: all IPv6 and IPv4 addresses, port 25)
; use "[::0]:25" to listen on IPv6 and IPv4 (not all OSes)
listen=[::0]:2525
; Note you can listen on multiple IPs/ports using commas:
;listen=127.0.0.1:2529,127.0.0.2:2529,127.0.0.3:2530
; public IP address (default: none)
; If your machine is behind a NAT, some plugins (SPF, GeoIP) gain features
; if they know the servers public IP. If 'stun' is installed, Haraka will
; try to figure it out. If that doesn't work, set it here.
;public_ip=N.N.N.N
; Time in seconds to let sockets be idle with no activity
;inactivity_timeout=300
; Drop privileges to this user/group
;user=smtp
;group=smtp
; Don't stop Haraka if plugins fail to compile
;ignore_bad_plugins=0
; Run using cluster to fork multiple backend processes
;nodes=cpus
; Daemonize
;daemonize=true
;daemon_log_file=/var/log/haraka.log
;daemon_pid_file=/var/run/haraka.pid
; Spooling
; Save memory by spooling large messages to disk
;spool_dir=/var/spool/haraka
; Specify -1 to never spool to disk
; Specify 0 to always spool to disk
; Otherwise specify a size in bytes, once reached the
; message will be spooled to disk to save memory.
;spool_after=
; Force Shutdown Timeout
; - Haraka tries to close down gracefully, but if everything is shut down
; after this time it will hard close. 30s is usually long enough to
; wait for outbound connections to finish.
;force_shutdown_timeout=30
; SMTP service extensions: https://tools.ietf.org/html/rfc1869
; strict_rfc1869 = false
; Advertise support for SMTPUTF8 (RFC-6531)
;smtputf8=true
[headers]
;add_received=true
;clean_auth_results=true
; replace header_hide_version
;show_version=true
; replace max_header_lines
max_lines=1000
; replace max_received_count
max_received=100

View File

@@ -1 +0,0 @@
no_starttls_ports[]=2525

View File

@@ -1,12 +0,0 @@
#!/bin/sh
cd keys
openssl genrsa -out private 4096
chmod 0400 private
openssl rsa -in private -out public -pubout
cd ..
bash show-info.sh

View File

@@ -1 +0,0 @@
This is where all the keys are stored.

View File

@@ -1,30 +0,0 @@
cd keys
cat private | base64 -w0 > private_base64.txt
cat public | base64 -w0 > public_base64.txt
echo ""
echo ""
echo ""
echo "Add this to docker compose file - DKIM private key for env var is:"
cat private_base64.txt
echo ""
echo ""
echo ""
echo "Add this to docker compose file - DKIM public key for env var is:"
cat public_base64.txt
echo ""
echo ""
echo ""
echo "You need to add this to DNS"
echo "Type: TXT"
echo "Key: haraka._domainkey"
echo "v=DKIM1;p=$(grep -v '^-' public | tr -d '\n')"
cd ..

View File

@@ -1,13 +0,0 @@
email_parser
========
Parses email messages and extracts the following information:
* `from` - the email address of the sender
* `to` - the email address of the recipient
* `subject` - the subject of the email
* `body` - the body of the email
Configuration
-------------
* `config/email_parser` - describe what effect this config file has

View File

@@ -1,29 +0,0 @@
# Setup auth
echo "domain = $DOMAIN" >> /harakaapp/config/dkim_sign.ini
echo "$DOMAIN" > /harakaapp/config/host_list
echo "$INCOMING_EMAIL_DOMAIN" >> /harakaapp/config/host_list
echo "$DOMAIN" > /harakaapp/config/me
echo "$SMTP_EMAIL=$SMTP_PASSWORD" >> /harakaapp/config/auth_flat_file.ini
openssl req -x509 -nodes -days 2190 -newkey rsa:2048 -keyout /harakaapp/config/tls_key.pem -out /harakaapp/config/tls_cert.pem -subj "/C=US/ST=Massachusetts/L=Boston/O=Hackerbay/CN=$DOMAIN"
# DKIM
mkdir -p /harakaapp/config/dkim/$DOMAIN
touch /harakaapp/config/dkim/$DOMAIN/selector
echo "$DKIM_SELECTOR" > /harakaapp/config/dkim/$DOMAIN/selector
# Decode keys from base64
echo "$DKIM_PUBLIC_KEY" | base64 -d > /harakaapp/config/dkim/$DOMAIN/public
echo "$DKIM_PRIVATE_KEY" | base64 -d > /harakaapp/config/dkim/$DOMAIN/private
echo "IMPORTANT: Add this to your DNS"
echo "You need to add this to DNS"
echo "Type: TXT"
echo "Key: $DKIM_SELECTOR._domainkey"
echo "v=DKIM1;p=$(grep -v '^-' /harakaapp/config/dkim/$DOMAIN/public | tr -d '\n')"
# Run haraka
haraka -c /harakaapp

316
Haraka/package-lock.json generated
View File

@@ -1,316 +0,0 @@
{
"name": "haraka",
"version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "haraka",
"version": "1.0.0",
"license": "ISC",
"dependencies": {
"mailparser": "^3.7.1"
}
},
"node_modules/@selderee/plugin-htmlparser2": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.11.0.tgz",
"integrity": "sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==",
"dependencies": {
"domhandler": "^5.0.3",
"selderee": "^0.11.0"
},
"funding": {
"url": "https://ko-fi.com/killymxi"
}
},
"node_modules/deepmerge": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
"integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/dom-serializer": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
"integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
"dependencies": {
"domelementtype": "^2.3.0",
"domhandler": "^5.0.2",
"entities": "^4.2.0"
},
"funding": {
"url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
}
},
"node_modules/domelementtype": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
"integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/fb55"
}
]
},
"node_modules/domhandler": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
"integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
"dependencies": {
"domelementtype": "^2.3.0"
},
"engines": {
"node": ">= 4"
},
"funding": {
"url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
"node_modules/domutils": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
"integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
"dependencies": {
"dom-serializer": "^2.0.0",
"domelementtype": "^2.3.0",
"domhandler": "^5.0.3"
},
"funding": {
"url": "https://github.com/fb55/domutils?sponsor=1"
}
},
"node_modules/encoding-japanese": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/encoding-japanese/-/encoding-japanese-2.1.0.tgz",
"integrity": "sha512-58XySVxUgVlBikBTbQ8WdDxBDHIdXucB16LO5PBHR8t75D54wQrNo4cg+58+R1CtJfKnsVsvt9XlteRaR8xw1w==",
"engines": {
"node": ">=8.10.0"
}
},
"node_modules/entities": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
"engines": {
"node": ">=0.12"
},
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/he": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
"bin": {
"he": "bin/he"
}
},
"node_modules/html-to-text": {
"version": "9.0.5",
"resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-9.0.5.tgz",
"integrity": "sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==",
"dependencies": {
"@selderee/plugin-htmlparser2": "^0.11.0",
"deepmerge": "^4.3.1",
"dom-serializer": "^2.0.0",
"htmlparser2": "^8.0.2",
"selderee": "^0.11.0"
},
"engines": {
"node": ">=14"
}
},
"node_modules/htmlparser2": {
"version": "8.0.2",
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz",
"integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==",
"funding": [
"https://github.com/fb55/htmlparser2?sponsor=1",
{
"type": "github",
"url": "https://github.com/sponsors/fb55"
}
],
"dependencies": {
"domelementtype": "^2.3.0",
"domhandler": "^5.0.3",
"domutils": "^3.0.1",
"entities": "^4.4.0"
}
},
"node_modules/iconv-lite": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
"integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/leac": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/leac/-/leac-0.6.0.tgz",
"integrity": "sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==",
"funding": {
"url": "https://ko-fi.com/killymxi"
}
},
"node_modules/libbase64": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/libbase64/-/libbase64-1.3.0.tgz",
"integrity": "sha512-GgOXd0Eo6phYgh0DJtjQ2tO8dc0IVINtZJeARPeiIJqge+HdsWSuaDTe8ztQ7j/cONByDZ3zeB325AHiv5O0dg=="
},
"node_modules/libmime": {
"version": "5.3.5",
"resolved": "https://registry.npmjs.org/libmime/-/libmime-5.3.5.tgz",
"integrity": "sha512-nSlR1yRZ43L3cZCiWEw7ali3jY29Hz9CQQ96Oy+sSspYnIP5N54ucOPHqooBsXzwrX1pwn13VUE05q4WmzfaLg==",
"dependencies": {
"encoding-japanese": "2.1.0",
"iconv-lite": "0.6.3",
"libbase64": "1.3.0",
"libqp": "2.1.0"
}
},
"node_modules/libqp": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/libqp/-/libqp-2.1.0.tgz",
"integrity": "sha512-O6O6/fsG5jiUVbvdgT7YX3xY3uIadR6wEZ7+vy9u7PKHAlSEB6blvC1o5pHBjgsi95Uo0aiBBdkyFecj6jtb7A=="
},
"node_modules/linkify-it": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz",
"integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==",
"dependencies": {
"uc.micro": "^2.0.0"
}
},
"node_modules/mailparser": {
"version": "3.7.1",
"resolved": "https://registry.npmjs.org/mailparser/-/mailparser-3.7.1.tgz",
"integrity": "sha512-RCnBhy5q8XtB3mXzxcAfT1huNqN93HTYYyL6XawlIKycfxM/rXPg9tXoZ7D46+SgCS1zxKzw+BayDQSvncSTTw==",
"dependencies": {
"encoding-japanese": "2.1.0",
"he": "1.2.0",
"html-to-text": "9.0.5",
"iconv-lite": "0.6.3",
"libmime": "5.3.5",
"linkify-it": "5.0.0",
"mailsplit": "5.4.0",
"nodemailer": "6.9.13",
"punycode.js": "2.3.1",
"tlds": "1.252.0"
}
},
"node_modules/mailsplit": {
"version": "5.4.0",
"resolved": "https://registry.npmjs.org/mailsplit/-/mailsplit-5.4.0.tgz",
"integrity": "sha512-wnYxX5D5qymGIPYLwnp6h8n1+6P6vz/MJn5AzGjZ8pwICWssL+CCQjWBIToOVHASmATot4ktvlLo6CyLfOXWYA==",
"dependencies": {
"libbase64": "1.2.1",
"libmime": "5.2.0",
"libqp": "2.0.1"
}
},
"node_modules/mailsplit/node_modules/encoding-japanese": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/encoding-japanese/-/encoding-japanese-2.0.0.tgz",
"integrity": "sha512-++P0RhebUC8MJAwJOsT93dT+5oc5oPImp1HubZpAuCZ5kTLnhuuBhKHj2jJeO/Gj93idPBWmIuQ9QWMe5rX3pQ==",
"engines": {
"node": ">=8.10.0"
}
},
"node_modules/mailsplit/node_modules/libbase64": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/libbase64/-/libbase64-1.2.1.tgz",
"integrity": "sha512-l+nePcPbIG1fNlqMzrh68MLkX/gTxk/+vdvAb388Ssi7UuUN31MI44w4Yf33mM3Cm4xDfw48mdf3rkdHszLNew=="
},
"node_modules/mailsplit/node_modules/libmime": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/libmime/-/libmime-5.2.0.tgz",
"integrity": "sha512-X2U5Wx0YmK0rXFbk67ASMeqYIkZ6E5vY7pNWRKtnNzqjvdYYG8xtPDpCnuUEnPU9vlgNev+JoSrcaKSUaNvfsw==",
"dependencies": {
"encoding-japanese": "2.0.0",
"iconv-lite": "0.6.3",
"libbase64": "1.2.1",
"libqp": "2.0.1"
}
},
"node_modules/mailsplit/node_modules/libqp": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/libqp/-/libqp-2.0.1.tgz",
"integrity": "sha512-Ka0eC5LkF3IPNQHJmYBWljJsw0UvM6j+QdKRbWyCdTmYwvIDE6a7bCm0UkTAL/K+3KXK5qXT/ClcInU01OpdLg=="
},
"node_modules/nodemailer": {
"version": "6.9.13",
"resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.13.tgz",
"integrity": "sha512-7o38Yogx6krdoBf3jCAqnIN4oSQFx+fMa0I7dK1D+me9kBxx12D+/33wSb+fhOCtIxvYJ+4x4IMEhmhCKfAiOA==",
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/parseley": {
"version": "0.12.1",
"resolved": "https://registry.npmjs.org/parseley/-/parseley-0.12.1.tgz",
"integrity": "sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==",
"dependencies": {
"leac": "^0.6.0",
"peberminta": "^0.9.0"
},
"funding": {
"url": "https://ko-fi.com/killymxi"
}
},
"node_modules/peberminta": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/peberminta/-/peberminta-0.9.0.tgz",
"integrity": "sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==",
"funding": {
"url": "https://ko-fi.com/killymxi"
}
},
"node_modules/punycode.js": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz",
"integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==",
"engines": {
"node": ">=6"
}
},
"node_modules/safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"node_modules/selderee": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/selderee/-/selderee-0.11.0.tgz",
"integrity": "sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==",
"dependencies": {
"parseley": "^0.12.0"
},
"funding": {
"url": "https://ko-fi.com/killymxi"
}
},
"node_modules/tlds": {
"version": "1.252.0",
"resolved": "https://registry.npmjs.org/tlds/-/tlds-1.252.0.tgz",
"integrity": "sha512-GA16+8HXvqtfEnw/DTcwB0UU354QE1n3+wh08oFjr6Znl7ZLAeUgYzCcK+/CCrOyE0vnHR8/pu3XXG3vDijXpQ==",
"bin": {
"tlds": "bin.js"
}
},
"node_modules/uc.micro": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz",
"integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A=="
}
}
}

View File

@@ -1,17 +0,0 @@
{
"name": "haraka",
"version": "1.0.0",
"description": "``` sudo docker build . -t haraka:latest ```",
"main": "index.js",
"directories": {
"doc": "docs"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"mailparser": "^3.7.1"
}
}

View File

@@ -1,29 +0,0 @@
// const MailParser = require('mailparser').MailParser;
// exports.hook_data_post = function (next, connection) {
// // Get the email data
// var email_data = connection.transaction.data_lines.join('\n');
// // Parse the email data
// var mailparser = new MailParser();
// mailparser.on('end', function(mail_object){
// // Log the email data
// connection.loginfo('Subject: ' + mail_object.subject);
// connection.loginfo('From: ' + JSON.stringify(mail_object.from));
// connection.loginfo('To: ' + JSON.stringify(mail_object.to));
// connection.loginfo('Text: ' + mail_object.text);
// connection.loginfo('HTML: ' + mail_object.html);
// });
// mailparser.write(email_data);
// mailparser.end();
// next();
// };
exports.hook_rcpt = function (next, connection, params) {
const rcpt = params[0];
this.loginfo("Got recipient: " + rcpt);
next();
};

View File

@@ -215,17 +215,9 @@ then
# install services.
if [[ "$2" == "enterprise" ]]
then
sudo helm install -f ./kubernetes/values-enterprise-ci.yaml fi ./HelmChart/public/oneuptime \
--set haraka.domain=$DOMAIN \
--set haraka.dkimPrivateKey=$DKIM_PRIVATE_KEY \
--set haraka.tlsCert=$TLS_CERT \
--set haraka.tlsKey=$TLS_KEY
sudo helm install -f ./kubernetes/values-enterprise-ci.yaml fi ./HelmChart/public/oneuptime
else
sudo helm install -f ./kubernetes/values-saas-ci.yaml fi ./HelmChart/public/oneuptime \
--set haraka.domain=$DOMAIN \
--set haraka.dkimPrivateKey=$DKIM_PRIVATE_KEY \
--set haraka.tlsCert=$TLS_CERT \
--set haraka.tlsKey=$TLS_KEY
sudo helm install -f ./kubernetes/values-saas-ci.yaml fi ./HelmChart/public/oneuptime
fi
else
sudo k delete job oneuptime-InitScript || echo "InitScript already deleted"
@@ -238,11 +230,7 @@ else
sudo helm install fi oneuptime/OneUptime \
--set nginx-ingress-controller.service.type=NodePort \
--set nginx-ingress-controller.hostNetwork=true \
--set image.tag=$AVAILABLE_VERSION \
--set haraka.domain=$DOMAIN \
--set haraka.dkimPrivateKey=$DKIM_PRIVATE_KEY \
--set haraka.tlsCert=$TLS_CERT \
--set haraka.tlsKey=$TLS_KEY
--set image.tag=$AVAILABLE_VERSION
else
updateinstallation
fi

View File

@@ -106,11 +106,6 @@ The following table lists the configurable parameters of the OneUptime chart and
| `probes.<key>.additionalContainers` | Additional containers to add to the probe pod | `nil` | |
| `probes.<key>.resources` | Pod resources (limits, requests) | `nil` | |
| `statusPage.cnameRecord` | CNAME record for the status page | `nil` | |
| `internalSmtp.sendingDomain` | Domain to send emails from | `nil` | |
| `internalSmtp.dkimPrivateKey` | DKIM Private Key that is set for sending domain | `nil` | |
| `internalSmtp.dkimPublicKey` | DKIM Public Key that is set for sending domain | `nil` | |
| `internalSmtp.email` | Email address to send emails from | `nil` | |
| `internalSmtp.name` | Name to send emails from | `nil` | |
| `logLevel` | Can be one of the following - INFO, WARN, ERROR, DEBUG | `INFO` | |
| `incidents.disableAutomaticCreation` | Disable incident creation (use this when your team is overloaded with incidents or in emergencies) | `false` | |
| `alerts.disableAutomaticCreation` | Disable alert creation (use this when your team is overloaded with alerts or in emergencies) | `false` | |

View File

@@ -91,14 +91,6 @@ spec:
value: {{ $.Values.billing.smsDefaultValueInCents | quote }}
- name: CALL_DEFAULT_COST_IN_CENTS_PER_MINUTE
value: {{ $.Values.billing.callDefaultValueInCentsPerMinute | quote }}
- name: INTERNAL_SMTP_HOST
value: {{ printf "%s-haraka.%s.svc.%s" $.Release.Name $.Release.Namespace $.Values.global.clusterDomain | quote }}
- name: INTERNAL_SMTP_FROM_NAME
value: {{ $.Values.internalSmtp.name | quote }}
- name: INTERNAL_SMTP_EMAIL
value: {{ $.Values.internalSmtp.email | quote }}
- name: INTERNAL_SMTP_PASSWORD
value: "internal_smtp_password"
- name: DISABLE_TELEMETRY
value: {{ $.Values.app.disableTelemetryCollection | quote }}

View File

@@ -1,83 +0,0 @@
{{- if $.Values.internalSmtp.enabled -}}
# OneUptime haraka Deployment
{{- $harakaQueue := dict "SizeLimit" "1Gi" "MountPath" "/harakaapp/queue" -}}
{{- $harakaVolumes := dict "haraka-queue" $harakaQueue -}}
{{- $harakaPorts := dict "port" $.Values.port.haraka -}}
{{- $harakaEnv := dict "SMTP_EMAIL" $.Values.internalSmtp.email "SMTP_PASSWORD" "internal_smtp_password" "DKIM_SELECTOR" "oneuptime" "DOMAIN" $.Values.internalSmtp.sendingDomain "INCOMING_EMAIL_DOMAIN" $.Values.internalSmtp.incomingEmailDomain "DKIM_PRIVATE_KEY" $.Values.internalSmtp.dkimPrivateKey "DKIM_PUBLIC_KEY" $.Values.internalSmtp.dkimPublicKey -}}
{{- $harakaDeploymentArgs :=dict "ServiceName" "haraka" "Ports" $harakaPorts "Release" $.Release "Values" $.Values "Env" $harakaEnv "Volumes" $harakaVolumes "Resources" $.Values.haraka.resources "DisableAutoscaler" $.Values.haraka.disableAutoscaler -}}
{{- include "oneuptime.deployment" $harakaDeploymentArgs }}
---
apiVersion: v1
kind: Service
metadata:
labels:
app: {{ printf "%s-%s" $.Release.Name "haraka" }}
app.kubernetes.io/part-of: oneuptime
app.kubernetes.io/managed-by: Helm
appname: oneuptime
name: {{ printf "%s-%s" $.Release.Name "haraka" }}
namespace: {{ $.Release.Namespace }}
annotations:
{{- if $.Values.metalLb.enabled }}
metallb.universe.tf/address-pool: {{ printf "%s-%s" $.Release.Name "metallb-address-pool" }}
{{- end }}
spec:
{{- if $.Values.internalSmtp.service.loadBalancerIP }}
loadBalancerIP: {{ $.Values.internalSmtp.service.loadBalancerIP }}
{{- end }}
{{- if $.Values.internalSmtp.service.externalIPs }}
externalIPs:
{{- range $key, $val := $.Values.internalSmtp.service.externalIPs }}
- {{ $val }}
{{- end }}
{{- end }}
ports:
- name: pop3
protocol: TCP
port: 110
targetPort: 110
- name: imap
protocol: TCP
port: 143
targetPort: 143
- name: pop3s
protocol: TCP
port: 995
targetPort: 995
- name: imaps
protocol: TCP
port: 993
targetPort: 993
- name: smtp
protocol: TCP
port: 25
targetPort: 25
- name: submission
protocol: TCP
port: 587
targetPort: 587
- name: smtps
protocol: TCP
port: 465
targetPort: 465
- name: haraka
protocol: TCP
port: 2525
targetPort: 2525
selector:
app: {{ printf "%s-%s" $.Release.Name "internalSmtp" }}
{{- if ($.Values.internalSmtp.service.type) }}
type: {{ $.Values.internalSmtp.service.type }}
{{- else }}
type: ClusterIP
{{- end}}
---
# OneUptime haraka autoscaler
{{- $harakaAutoScalerArgs := dict "ServiceName" "haraka" "Release" $.Release "Values" $.Values "DisableAutoscaler" $.Values.haraka.disableAutoscaler -}}
{{- include "oneuptime.autoscaler" $harakaAutoScalerArgs }}
---
{{- end -}}

View File

@@ -12,7 +12,6 @@ stringData:
## This is a workaround to keep the secrets unchanged
{{- if .Release.IsUpgrade }}
internal-smtp: {{ index (lookup "v1" "Secret" $.Release.Namespace (printf "%s-secrets" $.Release.Name)).data "internal-smtp" | b64dec }}
oneuptime-secret: {{ index (lookup "v1" "Secret" $.Release.Namespace (printf "%s-secrets" $.Release.Name)).data "oneuptime-secret" | b64dec }}
encryption-secret: {{ index (lookup "v1" "Secret" $.Release.Namespace (printf "%s-secrets" $.Release.Name)).data "encryption-secret" | b64dec }}
@@ -26,7 +25,6 @@ stringData:
{{ else }} # install operation
internal-smtp: {{ randAlphaNum 32 | quote }}
oneuptime-secret: {{ randAlphaNum 32 | quote }}
encryption-secret: {{ randAlphaNum 32 | quote }}

View File

@@ -179,22 +179,6 @@ vapid:
privateKey:
subject: mailto:support@oneuptime.com
internalSmtp:
enabled: true
incomingEmailDomain:
sendingDomain:
dkimPrivateKey:
dkimPublicKey:
email:
name:
service:
loadBalancerIP:
# Change this to LoadBalancer if you want to receive emails from the internet. This could be useful for Incoming Email monitors.
type: ClusterIP
externalIPs:
# - 51.158.55.153 # Please make sure this is the same as the one in metalLb.ipAdddressPool.addresses
incidents:
disableAutomaticCreation: false
@@ -257,7 +241,6 @@ port:
nginxHttp: 80
# If you are connecting Status Pages to custom domains, then this will be the port where the status page will be hosted on.
statusPageHttpsPort: 443
haraka: 2525
otelCollectorGrpc: 4317
otelCollectorHttp: 4318
isolatedVM: 4572
@@ -475,10 +458,6 @@ adminDashboard:
disableAutoscaler: false
resources:
haraka:
disableAutoscaler: false
resources:
worker:
disableTelemetryCollection: false
disableAutoscaler: false

View File

@@ -2,6 +2,5 @@ User-agent: *
Disallow: /api/*
Disallow: /StatusPage/*
Disallow: /admin/*
Disallow: /haraka/*
Disallow: /dashboard/*
Sitemap: https://oneuptime.com/sitemap.xml

View File

@@ -15,7 +15,7 @@ export default class AddDefaultGlobalConfig extends DataMigrationBase {
const globalConfig: GlobalConfig = new GlobalConfig();
globalConfig.id = ObjectID.getZeroObjectID();
globalConfig.emailServerType = EmailServerType.Internal;
globalConfig.emailServerType = EmailServerType.CustomSMTP;
globalConfig.sendgridFromName = "OneUptime";
globalConfig.smtpFromName = "OneUptime";

View File

@@ -13,11 +13,7 @@ export default class UpdateGlobalConfigFromEnv extends DataMigrationBase {
public override async migrate(): Promise<void> {
// get all the users with email isVerified true.
let emailServerType: EmailServerType = EmailServerType.Internal;
if (process.env["USE_INTERNAL_SMTP"] !== "true") {
emailServerType = EmailServerType.CustomSMTP;
}
let emailServerType: EmailServerType = EmailServerType.CustomSMTP;
if (process.env["SENDGRID_API_KEY"]) {
emailServerType = EmailServerType.Sendgrid;

View File

@@ -25,7 +25,6 @@ REDIS_PASSWORD=please-change-this-to-random-value
ENCRYPTION_SECRET=please-change-this-to-random-value
GLOBAL_PROBE_1_KEY=please-change-this-to-random-value
GLOBAL_PROBE_2_KEY=please-change-this-to-random-value
INTERNAL_SMTP_PASSWORD=please-change-this-to-random-value
@@ -135,13 +134,6 @@ WORKFLOW_PORT=3099
API_REFERENCE_PORT=1446
DOCS_PORT=1447
# If USE_INTERNAL_SMTP is true then you need to fill these values.
INTERNAL_SMTP_FROM_NAME=OneUptime
INTERNAL_SMTP_DKIM_PRIVATE_KEY_AS_BASE64=
INTERNAL_SMTP_DKIM_PUBLIC_KEY_AS_BASE64=
INTERNAL_SMTP_EMAIL=test@yourcompany.com
INTERNAL_SMTP_SENDING_DOMAIN=yourcompany.com
# Plans
# This is in the format of PlanName,PlanIdFromBillingProvider,MonthlySubscriptionPlanAmountInUSD,YearlySubscriptionPlanAmountInUSD,Order,TrialPeriodInDays
# Enterprise plan will have -1 which means custom pricing.

View File

@@ -135,24 +135,6 @@ x-common-server-variables: &common-server-variables
services:
haraka:
networks:
- oneuptime
image: oneuptime/haraka:${APP_TAG}
restart: always
environment:
SMTP_PASSWORD: ${INTERNAL_SMTP_PASSWORD}
SMTP_EMAIL: ${INTERNAL_SMTP_EMAIL}
DKIM_SELECTOR: oneuptime
DOMAIN: ${INTERNAL_SMTP_SENDING_DOMAIN}
DKIM_PRIVATE_KEY: ${INTERNAL_SMTP_DKIM_PRIVATE_KEY_AS_BASE64}
DKIM_PUBLIC_KEY: ${INTERNAL_SMTP_DKIM_PUBLIC_KEY_AS_BASE64}
logging:
driver: "local"
options:
max-size: "1000m"
redis:
image: redis:7.0.12
restart: always
@@ -297,9 +279,6 @@ services:
CALL_DEFAULT_COST_IN_CENTS_PER_MINUTE: ${CALL_DEFAULT_COST_IN_CENTS_PER_MINUTE}
SMS_HIGH_RISK_COST_IN_CENTS: ${SMS_HIGH_RISK_COST_IN_CENTS}
CALL_HIGH_RISK_COST_IN_CENTS_PER_MINUTE: ${CALL_HIGH_RISK_COST_IN_CENTS_PER_MINUTE}
INTERNAL_SMTP_EMAIL: ${INTERNAL_SMTP_EMAIL}
INTERNAL_SMTP_FROM_NAME: ${INTERNAL_SMTP_FROM_NAME}
INTERNAL_SMTP_PASSWORD: ${INTERNAL_SMTP_PASSWORD}
DISABLE_TELEMETRY: ${DISABLE_TELEMETRY_FOR_APP}
logging:
driver: "local"

View File

@@ -3,15 +3,6 @@
services:
haraka:
extends:
file: ./docker-compose.base.yml
service: haraka
build:
network: host
context: .
dockerfile: ./Haraka/Dockerfile
redis:
ports:
- '6310:6379'

View File

@@ -3,11 +3,6 @@
services:
haraka:
extends:
file: ./docker-compose.base.yml
service: haraka
redis:
extends:
file: ./docker-compose.base.yml