<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>시나브로인 &amp;gt; 개발자 &amp;gt; Linux</title>
<link>https://sinabroin.com/pr_linux</link>
<language>ko</language>
<description>Linux (2026-03-25 09:49:16)</description>

<item>
<title>네임서버 SPF(Sender Policy Framework) 설정 및 검증</title>
<link>https://sinabroin.com/pr_linux/44</link>
<description><![CDATA[<p>1. 개요</p>
<p><br /></p>
<p>SPF(Sender Policy Framework)는 도메인 기반 메일 인증 기술로,</p>
<p>DNS에 발송 허용 서버를 명시하여 메일 위변조(Spoofing)를 방지하는 역할을 합니다.</p>
<p><br /></p>
<p>SMTP 프로토콜의 구조적 한계(발신자 위조 가능)를 보완하기 위해 사용되며,</p>
<p>대부분의 메일 시스템(Gmail, Naver, Outlook 등)에서 기본적으로 검증됩니다.</p>
<p><br /></p>
<p>2. 적용 목적</p>
<p>- 발신 도메인 위조 방지</p>
<p>- 스팸 메일 판정률 감소</p>
<p>- 메일 서버 신뢰도 향상</p>
<p>- 외부 SMTP 서비스와의 호환성 확보</p>
<p><br /></p>
<p><br /></p>
<p>3. DNS 설정 (보안 마스킹)</p>
<p>v=spf1 ip4:XXX.XXX.XXX.0/24 ip4:XXX.XXX.XXX.0/24 ip4:XXX.XXX.XXX.XXX ~all</p>
<p><br /></p>
<p><br /></p>
<p>4. SPF 레코드 구조 분석</p>
<p><br /></p>
<p>SPF는 단일 TXT 레코드 내에서 아래와 같은 구조로 구성됩니다.</p>
<p><br /></p>
<p><br /></p>
<p>v=spf1 [mechanisms] [qualifier]</p>
<p><br /></p>
<p>✔ 주요 구성 요소</p>
<p>구성<span style="white-space:pre;"></span>설명</p>
<p>v=spf1<span style="white-space:pre;"></span>SPF 버전 선언 (필수, 1회만 사용)</p>
<p>ip4<span style="white-space:pre;"></span>IPv4 기반 발송 허용 서버</p>
<p>include<span style="white-space:pre;"></span>외부 메일 서비스 허용</p>
<p>all<span style="white-space:pre;"></span>기본 정책 (마지막 위치 필수)</p>
<p><br /></p>
<p><br /></p>
<p>5. 동작 원리 (메일 인증 흐름)</p>
<p>수신 서버는 SMTP 연결 시 발신 IP 확보</p>
<p>발신 도메인의 DNS TXT(SPF) 레코드 조회</p>
<p>SPF 정책에 따라 발신 IP 검증</p>
<p>결과 반환 (Pass / Fail / SoftFail / Neutral)</p>
<p><br /></p>
<p><br /></p>
<p>6. SPF 평가 결과 의미</p>
<p>결과<span style="white-space:pre;"></span>의미</p>
<p>Pass<span style="white-space:pre;"></span>허용된 서버</p>
<p>Fail (-all)<span style="white-space:pre;"></span>명시적 거부</p>
<p>SoftFail (~all)<span style="white-space:pre;"></span>비권장 (수신측 판단)</p>
<p>Neutral (?all)<span style="white-space:pre;"></span>정책 없음</p>
<p><br /></p>
<p><br /></p>
<p>7. 설정 시 핵심 규칙 (중요)</p>
<p><br /></p>
<p>★ 단일 레코드 원칙</p>
<p>SPF TXT 레코드는 반드시 1개만 존재해야 함</p>
<p>복수 존재 시 → PermError</p>
<p><br /></p>
<p><br /></p>
<p>all 메커니즘 위치</p>
<p>all은 반드시 마지막에 위치</p>
<p>이후 선언은 무시됨</p>
<p><br /></p>
<p>☞ 잘못된 예</p>
<p>v=spf1 ip4:1.1.1.1 -all ip4:2.2.2.2</p>
<p><br /></p>
<p>☞ 중복 선언 금지</p>
<p>❌ 잘못된 예</p>
<p>v=spf1 ... v=spf1 ...</p>
<p><br /></p>
<p>공백 구분 필수</p>
<p>각 메커니즘은 공백으로 분리</p>
<p><br /></p>
<p><br /></p>
<p><br /></p>
<p>8. 운영 전략 (실무 관점)</p>
<p><br /></p>
<p>● 초기 운영 단계</p>
<p>~all</p>
<p>신규 환경에서 안전하게 적용</p>
<p>오탐 방지</p>
<p><br /></p>
<p>● 안정화 이후</p>
<p>-all</p>
<p>허용된 서버 외 발송 완전 차단</p>
<p>보안 강화</p>
<p><br /></p>
<p>9. 검증 방법</p>
<p>☞ DNS 조회</p>
<p>dig TXT example.com</p>
<p><br /></p>
<p>☞ SPF 검사 도구</p>
<p>MXToolbox</p>
<p>Google Admin Toolbox</p>
<p>KISA DNS Checker</p>
<p><br /></p>
<p>11. 확장 구성 (권장)</p>
<p><br /></p>
<p>SPF 단독으로는 완전한 인증 체계가 아니므로</p>
<p>다음과 함께 구성하는 것을 권장한다.</p>
<p><br /></p>
<p>☞ DKIM (서명 기반 인증)</p>
<p>메일 위변조 방지</p>
<p>공개키 기반 검증</p>
<p>☞ DMARC (정책 통합)</p>
<p>SPF + DKIM 결과 기반 정책 적용</p>
<p>보고서 수신 가능</p>
<p><br /></p>
<p>12. 보안 및 운영 고려사항</p>
<p>내부 SMTP 릴레이 서버 포함 여부 확인</p>
<p>클라우드 메일 서비스(include) 추가 여부 검토</p>
<p>NAT 환경에서 실제 발신 IP 확인 필요</p>
<p>DNS 전파 시간 고려 (TTL)</p>
<p> </p>]]></description>
<dc:creator>정의에사도</dc:creator>
<dc:date>2026-03-25T09:49:16+09:00</dc:date>
</item>


<item>
<title>configure: error: Cannot find libtidy</title>
<link>https://sinabroin.com/pr_linux/42</link>
<description><![CDATA[configure: error: Cannot find libtidy 에러는 프로그램을 빌드(컴파일)할 때 필요한 HTML Tidy 라이브러리(libtidy)를 시스템에서 찾을 수 없어서 발생하는 문제
<p></p>]]></description>
<dc:creator>java</dc:creator>
<dc:date>2025-12-18T14:59:19+09:00</dc:date>
</item>


<item>
<title>MariaDB Comfile 설치하기 - MariaDB Server 11.8.3</title>
<link>https://sinabroin.com/pr_linux/41</link>
<description><![CDATA[<p><img src="https://www.sinabroin.com/data/editor/2510/20251020134628_1d0566338ec3e1d6ac51487eb784a960_t6z6.png" alt="img1.daumcdn.png" style="height:auto;" /></p>
<p> </p>
<p> </p>
<p>MariaDB는 관계형 데이터 베이스입니다 관계형 데이터베이스 하면은 MySQL이 떠오르실텐데요</p>
<p style="padding-top:0px;padding-bottom:0px;"> </p>
<p style="padding-top:0px;padding-bottom:0px;">MariaDB는 오픈소스 MySQL의 코드를 기반으로 관계형 데이터 베이스 입니다</p>
<p style="padding-top:0px;padding-bottom:0px;"><br /></p>
<p style="padding-top:0px;padding-bottom:0px;">처음 MySQL 은 무료 오픈소스였습니다 그런데 MySQL은 오라클로 넘어간 후에 유료가 되고 이러한 문제를 해결하기 위해 MySQL AB 출신 개발자들이 다로 나와 만든것이 MariaDB입니다</p>
<p style="padding-top:0px;padding-bottom:0px;"><br /></p>
<p style="padding-top:0px;padding-bottom:0px;">MySQL과 기능적으로 거의 동일하며, 성능은 더 뛰어나며, 초기 버전은 MariaDB 5.5 버전이고 MySQL 5.5 버전과 거의 모든 기능이 호환이되고 MySQL 5.6 버전부터는 MariaDB 10.0 버전으로 보시면 됩니다</p>
<p style="padding-top:0px;padding-bottom:0px;"><br /></p>
<p style="padding-top:0px;padding-bottom:0px;">추이는 MySQL에서 MariaDB로 대체해가며 점유율 점차적으로 상승하고 있으며, MySQL에서 MariaDB로 넘어간 업체들도 많아지고 있습니다.</p>
<p style="padding-top:0px;padding-bottom:0px;"><br /></p>
<p style="padding-top:0px;padding-bottom:0px;">성능부분에서는 MySQL 보다 훨씬 뛰어나다는 이야기가 많습니다</p>
<p style="padding-top:0px;padding-bottom:0px;"> </p>
<p style="padding-top:0px;padding-bottom:0px;"> </p>
<p><span style="font-size:18px;">URL : </span><a href="https://downloads.mariadb.org/mariadb/" target="_blank" rel="nofollow noreferrer noopener"><span style="font-size:18px;">https://downloads.mariadb.org/mariadb/</span></a><span style="font-size:18px;"> </span></p>
<p style="padding-top:0px;padding-bottom:0px;"> </p>
<p style="padding-top:0px;padding-bottom:0px;"> </p>
<p style="padding-top:0px;padding-bottom:0px;"> </p>
<p style="padding-top:0px;padding-bottom:0px;"> </p>
<p style="padding-top:0px;padding-bottom:0px;"> </p>]]></description>
<dc:creator>수세</dc:creator>
<dc:date>2025-10-20T13:48:49+09:00</dc:date>
</item>


<item>
<title>NGINX 에러페이지 설정하기</title>
<link>https://sinabroin.com/pr_linux/40</link>
<description><![CDATA[<p>NGINX에서는 지시어를 통해 특정 상태코드가 발생했을때 NGINX가 내부적으로 이동할 URI를 지정할수 있습니다</p>
<p><br /></p>
<p>error_page 지시어 뒤에 상태코드와 URL을 지정하여 접속한 사용자에게 리다이렉트를 할수 있습니다</p>
<p><br /></p>
<p>클라이언트 에러 페이지</p>
<p><br /></p>
<p>403: 권한 없음 → /data/www/errors/403.html</p>
<p><br /></p>
<p>404: 페이지 없음 → /data/www/errors/404.html</p>
<p><br /></p>
<p>서버 에러 페이지</p>
<p><br /></p>
<p>500: Internal Server Error</p>
<p><br /></p>
<p>502: Bad Gateway</p>
<p><br /></p>
<p>503: Service Unavailable</p>
<p><br /></p>
<p>504: Gateway Timeout</p>
<p>→ 모두 /data/www/errors/50x.html 로 안내</p>
<p><br /></p>
<p>internal; 옵션</p>
<p><br /></p>
<p>직접 http://example.com/50x.html 이런 식으로 접근은 못하게 막고, nginx가 내부에서만 호출할 수 있도록 제한</p>]]></description>
<dc:creator>수세</dc:creator>
<dc:date>2025-09-10T14:52:12+09:00</dc:date>
</item>


<item>
<title>ubuntu - redis 설치하기</title>
<link>https://sinabroin.com/pr_linux/39</link>
<description><![CDATA[<p> .</p>]]></description>
<dc:creator>수세</dc:creator>
<dc:date>2025-07-28T14:00:59+09:00</dc:date>
</item>


<item>
<title>리눅스에서 현재 디렉토리의 하위 디렉토리별 용량</title>
<link>https://sinabroin.com/pr_linux/38</link>
<description><![CDATA[<p>du: 디스크 사용량을 확인하는 명령어</p>
<p><br /></p>
<p>-h: 사람이 읽기 쉬운 단위(KB, MB, GB 등)로 표시</p>
<p><br /></p>
<p>--max-depth=1: 현재 디렉토리 기준 바로 아래(1단계 깊이)의 디렉토리 용량만 출력</p>]]></description>
<dc:creator>수세</dc:creator>
<dc:date>2025-06-27T13:52:33+09:00</dc:date>
</item>


<item>
<title>리눅스에서 심볼릭 링크를 만드는 명령어</title>
<link>https://sinabroin.com/pr_linux/37</link>
<description><![CDATA[<p>-s : 심볼릭 링크로 생성</p>
<p>[원본파일] : 연결할 실제 파일이나 디렉토리</p>
<p>[심볼릭 링크 파일] : 새로 만들 심볼릭 링크의 이</p>
<p> </p>
<p>링크 파일은 보동 -&gt;(화살표)로 표시됩니다.</p>
<p> </p>
<p>* 심볼릭 링크 자체의 권한은 의미 없음</p>
<p>* 파일에 실제 접근할 대는 원파일의 권한만 따름</p>]]></description>
<dc:creator>수세</dc:creator>
<dc:date>2025-06-11T10:48:48+09:00</dc:date>
</item>


<item>
<title>리눅스에서 현재 디렉토리에 있는 파일의 개수</title>
<link>https://sinabroin.com/pr_linux/36</link>
<description><![CDATA[<p>ls -l : 현재 디렉토리의 파일/디렉토리를 긴 형식으로 나열</p>
<p>grep ^- : 맨 앞에 -로 시작하는 줄(즉, 파일)만 찾기</p>
<p>wc -l 그줄의 개수를 세기</p>]]></description>
<dc:creator>수세</dc:creator>
<dc:date>2025-06-11T10:20:29+09:00</dc:date>
</item>


<item>
<title>리눅스에서 심볼릭 링크만 찾는 명령어</title>
<link>https://sinabroin.com/pr_linux/35</link>
<description><![CDATA[<p>/path/to/search는 검색할 디렉토리 경로 입니다.</p>
<p> </p>
<p>-type l 옵션은 심볼릭 링크 타입만 찾는다는 의미 입니다.</p>
<p> </p>
<p>현재 디렉토리에서 찾으려면 find . -type l 로 찾으면 됩니다.</p>]]></description>
<dc:creator>수세</dc:creator>
<dc:date>2025-06-11T09:53:07+09:00</dc:date>
</item>


<item>
<title>Nginx 오류 해결: "could not build server_names_hash, you should increase server_names_hash_bucket_size: 64"</title>
<link>https://sinabroin.com/pr_linux/34</link>
<description><![CDATA[<p>이 에러 메시지는 Nginx 설정 중 server_name에 너무 많은 도메인을 지정했거나, 도메인 이름이 길어서 Nginx의 해시 테이블 설정이 부족할 때 발생합니다.</p>
<p> </p>
<p>server_names_hash_bucket_size: 버킷의 크기입니다. 이름이 길 경우 이 값이 작으면 제대로 버킷을 구성할 수 없습니다.</p>
<p><br /></p>
<p>긴 서브도메인 또는 와일드카드 사용 시 이 경고가 자주 발생합니다.</p>
<p><br /></p>
<p>단순히 server_names_hash_bucket_size만 수정하면 무시될 수 있으니 두 항목 모두 조정하는 게 안전합니다.</p>]]></description>
<dc:creator>수세</dc:creator>
<dc:date>2025-05-21T17:47:43+09:00</dc:date>
</item>


<item>
<title>리눅스 FTP 계정 잠금하기</title>
<link>https://sinabroin.com/pr_linux/33</link>
<description><![CDATA[<p>passwd 명령어에 
   <code>-l</code>
    옵션은 계정을 잠그는(lock) 기능입니다.</p>]]></description>
<dc:creator>수세</dc:creator>
<dc:date>2025-01-15T11:04:55+09:00</dc:date>
</item>


<item>
<title>ubuntu mariadb 메모리 누수시 jemalloc 설치</title>
<link>https://sinabroin.com/pr_linux/32</link>
<description><![CDATA[<p> 1. libjemalloc-dev 설치</p>
<p>Ubuntu 20.04에서는 패키지 관리자를 통해 libjemalloc-dev를 쉽게 설치할 수 있습니다. 이 패키지는 jemalloc 라이브러리와 개발 헤더 파일을 포함하고 있습니다.</p>
<p><br /></p>
<p>2. MariaDB에 jemalloc 적용하기</p>
<p>mysqld_safe 에서 jemalloc 라이브러리를 추가하면 적용할 수 있습니다</p>
<p><br /></p>
<p>3. MariaDB에 재시작</p>
<p>mysqld_safe 파일을 수정하거나 컴파일이 완료되면, MariaDB를 재시작하여 변경 사항을 적용합니다.</p>
<p><br /></p>
<p><br /></p>
<p>4. MariaDB에 jemalloc 적용 확인하기</p>
<p>MariaDB가 jemalloc을 제대로 사용하고 있는지 확인하려면, lsof 명령어를 사용하여 jemalloc 라이브러리가 MariaDB 프로세스에 로드되었는지 확인할 수 있습니다.</p>]]></description>
<dc:creator>java</dc:creator>
<dc:date>2024-11-04T14:23:55+09:00</dc:date>
</item>


<item>
<title>리눅스 - 파일형식을 알수없는 파일 형식 조회후 삭제하기</title>
<link>https://sinabroin.com/pr_linux/31</link>
<description><![CDATA[<p> 1. /path/to/source_directory: 소스 디렉토리의 경로입니다. 여기서 파일을 검색합니다.</p>
<p>2. -type f: 파일 타입이 일반 파일인 경우만 검색합니다.</p>
<p>3. -exec sh -c '...' \;: 각 파일에 대해 쉘 명령어를 실행합니다.</p>
<p>4. file --mime {}: 파일의 MIME 타입을 확인합니다.</p>
<p>5. grep -q "text/xml; charset=unknown-8bit": MIME 타입이 text/xml; charset=unknown-8bit인지 확인합니다.</p>
<p>6. mv {} /path/to/destination_directory/: MIME 타입이 일치하는 파일을 목적 디렉토리로 이동합니다.</p>]]></description>
<dc:creator>수세</dc:creator>
<dc:date>2024-08-21T17:33:42+09:00</dc:date>
</item>


<item>
<title>리눅스 하위폴더 파일 개수 세</title>
<link>https://sinabroin.com/pr_linux/30</link>
<description><![CDATA[<p>현재 위치에서 하위 폴더 파일 개수 세는 명령어</p>]]></description>
<dc:creator>수세</dc:creator>
<dc:date>2024-08-21T17:16:41+09:00</dc:date>
</item>


<item>
<title>nginx 리다이렉트 설정</title>
<link>https://sinabroin.com/pr_linux/29</link>
<description><![CDATA[<p>1.HTTP를 HTTPS로 리다이렉트</p>
<p>HTTP 요청을 HTTPS로 리다이렉트하는 설정입니다. 이는 보안 연결을 강제하기 위해 흔히 사용됩니다.</p>
<p> </p>
<p>2 특정 URL 리다이렉트</p>
<p>특정 도메인으로 모든 트래픽을 리다이렉트하는 설정입니다. 예를 들어, test1.com을 test2.com으로 리다이렉트합니다.</p>
<p> </p>
<p> </p>
<p>3. 특정 URL 리다이렉트</p>
<p>특정 URL을 다른 URL로 리다이렉트하는 설정입니다. 예를 들어, /page를 /new-page로 리다이렉트합니다. </p>
<p> </p>
<p> </p>
<p> </p>]]></description>
<dc:creator>java</dc:creator>
<dc:date>2024-07-08T16:14:24+09:00</dc:date>
</item>

</channel>
</rss>
