Skip to content

Commit 3b04351

Browse files
committed
refs #43245, Integrated Header Check Auto-configuration Function
1 parent 1aa6b3f commit 3b04351

1 file changed

Lines changed: 96 additions & 0 deletions

File tree

container/init.sh

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,102 @@ if [ -f /home/vmail/passwd ]; then
220220
fi
221221

222222
postconf -e "myhostname = $mailname"
223+
224+
setup_header_check() {
225+
echo "[Header Check] Starting Postfix header_check configuration..."
226+
227+
local HEADER_CHECK_FILE="/etc/postfix/header_check"
228+
229+
echo "[Header Check] Using default rule with heredoc method"
230+
231+
# Check and create/update header_check file
232+
if [ -f "$HEADER_CHECK_FILE" ]; then
233+
echo "[Header Check] Found existing file: $HEADER_CHECK_FILE"
234+
235+
# Check if Feedback-ID related rules are already included
236+
if grep -q "Feedback-ID:" "$HEADER_CHECK_FILE"; then
237+
echo "[Header Check] File already contains Feedback-ID rules"
238+
239+
# Check if it contains the correct rule with $1
240+
if grep -q "PREPEND X-Log-Feedback-ID: \$1" "$HEADER_CHECK_FILE"; then
241+
echo "[Header Check] ✓ Target rule already exists, no modification needed"
242+
return 0
243+
else
244+
echo "[Header Check] Found different rule, appending new rule..."
245+
echo "" >> "$HEADER_CHECK_FILE" # Add blank line
246+
echo "# Added by Header Check setup - $(date)" >> "$HEADER_CHECK_FILE"
247+
# Use heredoc to ensure $1 is written correctly
248+
cat >> "$HEADER_CHECK_FILE" << 'EOF'
249+
/^Feedback-ID:\s*(\d+):/ PREPEND X-Log-Feedback-ID: $1
250+
EOF
251+
echo "[Header Check] ✓ New rule appended"
252+
fi
253+
else
254+
echo "[Header Check] No Feedback-ID rule found, appending..."
255+
echo "" >> "$HEADER_CHECK_FILE" # Add blank line
256+
echo "# Added by Header Check setup - $(date)" >> "$HEADER_CHECK_FILE"
257+
# Use heredoc to ensure $1 is written correctly
258+
cat >> "$HEADER_CHECK_FILE" << 'EOF'
259+
/^Feedback-ID:\s*(\d+):/ PREPEND X-Log-Feedback-ID: $1
260+
EOF
261+
echo "[Header Check] ✓ Rule appended to existing file"
262+
fi
263+
else
264+
echo "[Header Check] Creating new header_check file..."
265+
# Use heredoc to ensure $1 is written correctly
266+
cat > "$HEADER_CHECK_FILE" << 'EOF'
267+
# Header Check Rules - Created by init.sh $(date)
268+
/^Feedback-ID:\s*(\d+):/ PREPEND X-Log-Feedback-ID: $1
269+
EOF
270+
echo "[Header Check] ✓ New file created and rule added"
271+
fi
272+
273+
# Set file permissions
274+
chmod 644 "$HEADER_CHECK_FILE"
275+
chown root:root "$HEADER_CHECK_FILE"
276+
277+
# Display file content
278+
echo "[Header Check] === File Content ==="
279+
cat "$HEADER_CHECK_FILE" | while read line; do
280+
echo "[Header Check] $line"
281+
done
282+
echo "[Header Check] ====================="
283+
284+
# Update Postfix configuration
285+
echo "[Header Check] Updating Postfix configuration..."
286+
postconf -e 'header_checks = pcre:/etc/postfix/header_check'
287+
288+
# Verify configuration
289+
if postconf header_checks | grep -q "pcre:/etc/postfix/header_check"; then
290+
echo "[Header Check] ✓ Postfix configuration updated"
291+
else
292+
echo "[Header Check] ✗ Warning: Postfix configuration update failed"
293+
return 1
294+
fi
295+
296+
echo "[Header Check] ✓ Header Check configuration completed"
297+
return 0
298+
}
299+
300+
# Check if Header Check feature is enabled - Default enabled, supports multiple formats
301+
# Default behavior: If ENABLE_HEADER_CHECK is not set, default to enabled
302+
ENABLE_HEADER_CHECK_VALUE="${ENABLE_HEADER_CHECK:-true}"
303+
304+
if [ "$ENABLE_HEADER_CHECK_VALUE" = "true" ] || [ "$ENABLE_HEADER_CHECK_VALUE" = "True" ] || [ "$ENABLE_HEADER_CHECK_VALUE" = "TRUE" ] || \
305+
[ "$ENABLE_HEADER_CHECK_VALUE" = "1" ] || [ "$ENABLE_HEADER_CHECK_VALUE" = "yes" ] || [ "$ENABLE_HEADER_CHECK_VALUE" = "YES" ] || \
306+
[ "$ENABLE_HEADER_CHECK_VALUE" = "on" ] || [ "$ENABLE_HEADER_CHECK_VALUE" = "ON" ]; then
307+
echo "[Init] Header Check feature is enabled (ENABLE_HEADER_CHECK=$ENABLE_HEADER_CHECK_VALUE)"
308+
setup_header_check
309+
if [ $? -eq 0 ]; then
310+
echo "[Init] Header Check feature configured successfully"
311+
else
312+
echo "[Init] Warning: Header Check configuration failed"
313+
fi
314+
else
315+
echo "[Init] Header Check feature is disabled (ENABLE_HEADER_CHECK=$ENABLE_HEADER_CHECK_VALUE)"
316+
echo "[Init] To enable Header Check, set ENABLE_HEADER_CHECK=true (or 1, yes, on)"
317+
fi
318+
223319
subj="/C=US/ST=Denial/L=Springfield/O=Dis/CN=$mailname"
224320

225321
if [[ ! -a '/etc/ssl/certs/dovecot.pem' ]]

0 commit comments

Comments
 (0)