mirror of
				https://github.com/mail-in-a-box/mailinabox.git
				synced 2025-11-03 19:30:54 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			136 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			136 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<style>
 | 
						|
</style>
 | 
						|
 | 
						|
<h2>SMTP Relays</h2>
 | 
						|
 | 
						|
<p>SMTP Relays are third-party services you can hand off the responsability of getting the mail delivered. They
 | 
						|
	can be useful when, for example, port 25 is blocked.</p>
 | 
						|
 | 
						|
<p>Here, you can configure an authenticated SMTP relay (for example, <a href="https://sendgrid.com/"
 | 
						|
		target="_blank">SendGrid</a>) over port 587.</p>
 | 
						|
 | 
						|
<div id="smtp_relay_config">
 | 
						|
	<h3>SMTP Relay Configuration</h3>
 | 
						|
	<form class="form-horizontal" role="form" onsubmit="set_smtp_relay_config(); return false;">
 | 
						|
		<div class="form-group">
 | 
						|
			<table id="smtp-relays" class="table" style="width: 600px">
 | 
						|
				<tr>
 | 
						|
					<td>
 | 
						|
						<label for="use_relay" class="col-sm-1 control-label">Use Relay?</label>
 | 
						|
					</td>
 | 
						|
					<td>
 | 
						|
						<div class="col-sm-10">
 | 
						|
							<input type="checkbox" id="use_relay" name="use_relay" value="true"
 | 
						|
								onclick="checkfields();">
 | 
						|
						</div>
 | 
						|
					</td>
 | 
						|
				</tr>
 | 
						|
 | 
						|
				<tr>
 | 
						|
					<td>
 | 
						|
						<label for="relay_host" class="col-sm-1 control-label">Hostname</label>
 | 
						|
					</td>
 | 
						|
					<td>
 | 
						|
						<div class="col-sm-10">
 | 
						|
							<input type="text" class="form-control" id="relay_host" placeholder="host.domain.tld">
 | 
						|
						</div>
 | 
						|
					</td>
 | 
						|
					<td style="padding: 0; font-weight: bold;">:587</td>
 | 
						|
				</tr>
 | 
						|
 | 
						|
				<tr>
 | 
						|
					<td>
 | 
						|
						<label for="relay_use_auth" class="col-sm-1 control-label">Authenticate</label>
 | 
						|
					</td>
 | 
						|
					<td>
 | 
						|
						<div class="col-sm-10">
 | 
						|
							<input checked type="checkbox" id="relay_use_auth" name="relay_use_auth" value="true"
 | 
						|
								onclick="checkfields();">
 | 
						|
						</div>
 | 
						|
					</td>
 | 
						|
				</tr>
 | 
						|
 | 
						|
				<tr>
 | 
						|
					<td>
 | 
						|
						<label for="relay_auth_user" class="col-sm-1 control-label">Username</label>
 | 
						|
					</td>
 | 
						|
					<td>
 | 
						|
						<div class="col-sm-10">
 | 
						|
							<input type="text" class="form-control" id="relay_auth_user" placeholder="user">
 | 
						|
						</div>
 | 
						|
					</td>
 | 
						|
				</tr>
 | 
						|
 | 
						|
				<tr>
 | 
						|
					<td>
 | 
						|
						<label for="relay_auth_pass" class="col-sm-1 control-label">Password/Key</label>
 | 
						|
					</td>
 | 
						|
					<td>
 | 
						|
						<div class="col-sm-10">
 | 
						|
							<input type="password" class="form-control" id="relay_auth_pass" placeholder="password">
 | 
						|
						</div>
 | 
						|
					</td>
 | 
						|
				</tr>
 | 
						|
			</table>
 | 
						|
		</div>
 | 
						|
 | 
						|
		<div>
 | 
						|
			<button type="submit" class="btn btn-primary">Update</button>
 | 
						|
		</div>
 | 
						|
	</form>
 | 
						|
</div>
 | 
						|
 | 
						|
<script>
 | 
						|
	const use_relay = document.getElementById("use_relay")
 | 
						|
	const relay_host = document.getElementById("relay_host")
 | 
						|
	const relay_use_auth = document.getElementById("relay_use_auth")
 | 
						|
	const relay_auth_user = document.getElementById("relay_auth_user")
 | 
						|
	const relay_auth_pass = document.getElementById("relay_auth_pass")
 | 
						|
 | 
						|
	function checkfields() {
 | 
						|
		let relay_enabled = use_relay.checked
 | 
						|
		let auth_enabled = relay_use_auth.checked
 | 
						|
 | 
						|
		relay_host.disabled = !relay_enabled
 | 
						|
		relay_use_auth.disabled = !relay_enabled
 | 
						|
		relay_auth_user.disabled = !(relay_enabled && auth_enabled)
 | 
						|
		relay_auth_pass.disabled = !(relay_enabled && auth_enabled)
 | 
						|
	}
 | 
						|
 | 
						|
	function show_smtp_relays() {
 | 
						|
		api(
 | 
						|
			"/system/smtp/relay",
 | 
						|
			"GET",
 | 
						|
			{},
 | 
						|
			data => {
 | 
						|
				use_relay.checked = data.enabled
 | 
						|
				relay_host.value = data.host
 | 
						|
				relay_use_auth.checked = data.auth_enabled
 | 
						|
				relay_auth_user.value = data.user
 | 
						|
				relay_auth_pass.value = ""
 | 
						|
 | 
						|
				checkfields()
 | 
						|
			}
 | 
						|
		)
 | 
						|
	}
 | 
						|
 | 
						|
	function set_smtp_relay_config() {
 | 
						|
		api(
 | 
						|
			"/system/smtp/relay",
 | 
						|
			"POST",
 | 
						|
			{
 | 
						|
				enabled: use_relay.checked,
 | 
						|
				host: relay_host.value,
 | 
						|
				auth_enabled: relay_use_auth.checked,
 | 
						|
				user: relay_auth_user.value,
 | 
						|
				key: relay_auth_pass.value
 | 
						|
			},
 | 
						|
			() => {
 | 
						|
				show_modal_error("Done!", "The configuration has been updated and Postfix was restarted successfully. Please make sure everything is functioning as intended.", () => {
 | 
						|
					return false
 | 
						|
				})
 | 
						|
			}
 | 
						|
		)
 | 
						|
	}
 | 
						|
</script>
 |